伊利低乳糖 2016-03-08 06:20 采纳率: 0%
浏览 4846
已结题

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

文件格式是这样的:
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条回答 默认 最新

  • lm_whales 2016-03-08 06:37
    关注

    这么多数据,就别插入到列表中了
    只需要,显示用到的部分,加载到内存,用不到的保存在文件中,采用内存映射方式读取

    评论

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!