file2.Open(strInfoName, CFile::modeRead);
CString infonum,infoname,infogroup;
for(int filei=0;filei<m_pList.GetItemCount();filei++)
{
CString filenum=m_pList.GetItemText(filei,2);
file2.SeekToBegin();
while(file2.ReadString(info_strLine))
{
AfxExtractSubString(infonum,info_strLine,0,_T(','));
AfxExtractSubString(infogroup,info_strLine,1,_T(','));
AfxExtractSubString(infoname,info_strLine,2,_T(','));
if(filenum==infonum)
{
m_pList.SetItemText(filei,1,infoname);
m_pList.SetItemText(filei,4,infogroup);
m_pList.Invalidate(true) ;
break;
} }
}
file2.Close();
m_pList.SetRedraw(1);
文件中的和listctrl中的匹配后显示 可是速度太慢了 ,求提高速度的方法。
CString infonum,infoname,infogroup;
for(int filei=0;filei<m_pList.GetItemCount();filei++)
{
CString filenum=m_pList.GetItemText(filei,2);
file2.SeekToBegin();
while(file2.ReadString(info_strLine))
{
AfxExtractSubString(infonum,info_strLine,0,_T(','));
AfxExtractSubString(infogroup,info_strLine,1,_T(','));
AfxExtractSubString(infoname,info_strLine,2,_T(','));
if(filenum==infonum)
{
m_pList.SetItemText(filei,1,infoname);
m_pList.SetItemText(filei,4,infogroup);
m_pList.Invalidate(true) ;
break;
} }
}
file2.Close();
m_pList.SetRedraw(1);
文件中的和listctrl中的匹配后显示 可是速度太慢了 ,求提高速度的方法。
file2.Open(strInfoName, CFile::modeRead);
CString infonum,infoname,infogroup;//file2.SeekToBegin();
while(file2.ReadString(info_strLine))
{
AfxExtractSubString(infonum,info_strLine,0,_T(','));
AfxExtractSubString(infogroup,info_strLine,1,_T(','));
AfxExtractSubString(infoname,info_strLine,2,_T(','));
for(int filei=0;filei<m_pList.GetItemCount();filei++)
{
CString filenum=m_pList.GetItemText(filei,2);
if(filenum==infonum)
{
m_pList.SetItemText(filei,1,infoname);
m_pList.SetItemText(filei,4,infogroup);
m_pList.Invalidate(true) ;
break;
}
}
}
file2.Close();
m_pList.SetRedraw(1);
如果速度还是不行(假设你的m_pList数据项很多),把m_pList里的数据也读取出来放到vector<string>或者map<string,int>里去,然后一个个比较
_file.Open("C:\\test.txt",CFile::modeRead); //文件长度;
int _len = _file.GetLength();
char* pdata = new char[_len+1]; //读文件;
_file.Read(pdata,_len);
pdata[_len] = 0;
_file.Close();自己处理字符串
for(int filei=0;filei<m_pList.GetItemCount();filei++)
{
CString filenum=m_pList.GetItemText(filei,2);
//file2.SeekToBegin();
while(file2.Read(pdata,len))
{
pdata[len] = 0;
AfxExtractSubString(infonum,pdata,0,_T(','));
AfxExtractSubString(infogroup,pdata,1,_T(','));
AfxExtractSubString(infoname,pdata,2,_T(','));
if(filenum==infonum)
{
m_pList.SetItemText(filei,1,infoname);
m_pList.SetItemText(filei,4,infogroup);
m_pList.Invalidate(true) ;
break;
} }
}
file2.Close();
这样就一条数据
我把while循环和for换了顺序了,不是只注释了seek函数,你把我那个整个复制过去
这句去掉的话,文件中有的数据就找不到了!他的指针就从上一次找到的数据进行浏览了!