mfc读取edit控件内容,strText,strdata1,strdata2,有数据,data1,data2.数组没有数据,求解释解决思路
mfc读取edit控件内容,strText,strdata1,strdata2,..有数据,data1,data2..数组没有数据,求解释
------解决方案--------------------
你是从 data[1] 开始 存入的
是不是 只检查 data[0] 里面 有没有数据了???
------解决方案--------------------
调试的时候 这句
中的 strdata1 有 数据么?
前面 我不是 很清楚
你的 ReleaseBuffer() 是不是 太早了?
------解决方案--------------------
还能有这种错误~
嗯~
的确 没有注意到
------解决方案--------------------
你直接 new 一个 空间 吧~
查了 一下 CString 的 GetBuffer 和 RleaseBuffer 还挺有说道~
CString strdata1,strdata2,strdata3,strdata4;//用于暂时存放截取的列的值
int index;
int i=0;
int line = 0;//记录行号
double *data1;
data1=new double[ns];//存放第一列结果
double *data2;
data2=new double[ns];//存放第二列结果
double *data3;
data3=new double[ns];//存放第三列结果
double *data4;
data4=new double[ns]; //存放第四列结果
//读取一行内容存放在strLine中
int nLineCount = m_open.GetLineCount();//获得编辑控件的行数
CString strText, linebuf;
// Dump every line of text of the edit control.
for (i=1; t < nLineCount; t++)
{
// length of line i:
int len = m_open.LineLength(m_open.LineIndex(i));//LineLength获得编辑控件中行的长度,LineIndex获得在多行编辑控件中的某行的字符索引
m_open.GetLine(i, strText.GetBuffer(len), len);//Getline获得编辑控件的一行
strText.ReleaseBuffer(len);//ReleaseBuffer释放GetBuffer分配的动态内存
// linebuf.Format(_T("line %d: '%s'\n"), i, strText);
linebuf.Format(_T("%s\n"), strText);
//AfxMessageBox(linebuf);
//AFXDUMP(linebuf);//输出得每行数据
//获取到第一个tab键的索引
index = strText.FindOneOf(TEXT(" "));
//取得第一列数据
strdata1 =strText.Left(8);
//取到后删除所取内容
strText.Delete(0,index);
//去掉空格
strText.TrimLeft();
index = strText.FindOneOf(TEXT(" "));
//取到后删除所取内容
strText.Delete(0,index);
//去掉空格
strText.TrimLeft();
//第二列数据
index = strText.FindOneOf(TEXT(" "));
strdata2 = strText.Left(8);
strText.Delete(0,index);
strText.TrimLeft();
index = strText.FindOneOf(TEXT(" "));
//取到后删除所取内容
strText.Delete(0,index);
//去掉空格
strText.TrimLeft();
//第三列数据
index = strText.FindOneOf(TEXT(" "));
strdata3 = strText.Left(8);
strText.Delete(0,index);
strText.TrimLeft();
index = strText.FindOneOf(TEXT(" "));
//取到后删除所取内容
strText.Delete(0,index);
//去掉空格
strText.TrimLeft();
//第四列数据,取到第一个空格位置的索引
index = strText.FindOneOf(TEXT("\n"));
strdata4 = strText.Left(8);
strText.Delete(0,index);
strText.TrimLeft();
data1[i] = atof(strdata1)*m;//100.0
data2[i] = atof(strdata2)*m;
data3[i] = atof(strdata3)*m;
data4[i] = atof(strdata4)*m;
}
------解决方案--------------------
你是从 data[1] 开始 存入的
是不是 只检查 data[0] 里面 有没有数据了???
------解决方案--------------------
调试的时候 这句
data1[i] = atof(strdata1)*m;//100.0
中的 strdata1 有 数据么?
前面 我不是 很清楚
你的 ReleaseBuffer() 是不是 太早了?
------解决方案--------------------
还能有这种错误~
嗯~
的确 没有注意到
------解决方案--------------------
你直接 new 一个 空间 吧~
查了 一下 CString 的 GetBuffer 和 RleaseBuffer 还挺有说道~