chenxiaohua1994
伊利低乳糖
2016-03-08 06:20

mfc 读取大数据 (txt文件)显示

3
  • mfc
  • 大数据

文件格式是这样的:
dfd,afa,afa,234,r3r,d2ed,2d,3d2,d2d,2de,
dfa,fdsf,sa,dfdsf,sds,ddf,sdf,dsd,dfd,dfd,
......
数据间用,隔开
//list control 的初始化
CListCtrl* pmyListCtrl = (CListCtrl*)GetDlgItem(IDC_LIST1);
DWORD dwStyle = GetWindowLong(pmyListCtrl->m_hWnd, GWL_STYLE);
SetWindowLong( pmyListCtrl->m_hWnd, GWL_STYLE, dwStyle | LVS_REPORT);
DWORD styles = pmyListCtrl->GetExtendedStyle();
pmyListCtrl->SetExtendedStyle(styles|LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
TCHAR rgtsz[10][20] = {_T("port"),_T("mm:ss.ms_us_ns"),_T("Delta Time"),_T("Icon"),_T("SOF"),_T("数量"),_T("Bytes"),_T(""),_T("CRC"),_T("")}
LV_COLUMN lvcolumn;
CRect rect;
pmyListCtrl->GetWindowRect(&rect);
for (int i=0;i {
lvcolumn.mask = LVCF_FMT | LVCF_SUBITEM | LVCF_TEXT
| LVCF_WIDTH | LVCF_ORDER;
lvcolumn.fmt = LVCFMT_LEFT;
lvcolumn.pszText = rgtsz[i];
lvcolumn.iSubItem = i;
lvcolumn.iOrder = i;
lvcolumn.cx = rect.Width()/10;
pmyListCtrl->InsertColumn(i, &lvcolumn);
}
我现在是用CStdioFile实现按行读,file.Open((resultFileName),CFile::modeRead);打开要读取的文件,resultFileName是存放路径的字符串,然后用
pos=s.Find(L",");

s1=s.Left(pos);

s=s.Right(s.GetLength()-pos-1);

pos=s.Find(L",");

s2=s.Left(pos);

s=s.Right(s.GetLength()-pos-1);
......
m_list.InsertItem(n,s1);

m_list.SetItemText(n,1,s2);
......
这样的方式来插入数据,显示到list control里面

测试文件只有几百行的话读得很快,现在用5000行来测已经有2s左右的延迟了,那要是几百万,上千万行数据要怎么读取,虚拟列表或者内存映射要怎么弄,新学的mfc,很多东西都不太了解,希望能讲的详细点,谢谢!

  • 点赞
  • 回答
  • 收藏
  • 复制链接分享

3条回答