C++ Builder XE关于vector超速载入到listView表中
admin
2024-02-09 16:42:16
0

先要在Unit.h中预载入

#include        //用于虚拟listview

//---------------------------------------------------------------------------
//用于存储一条数据的结构体

struct ListViewData         //用于存储一条数据的结构体
{
        AnsiString  Caption;
        AnsiString SubItems1;
        AnsiString SubItems2;
        AnsiString DDnum;
        int stateindex;
};

private:    // User declarations
void __fastcall WndProc(Winapi::Messages::TMessage &Message);
std::vector m_lvDataVector;         //用于存储所以数据的向量

AnsiString Dir="";

     //Dir里保存着所选的文件夹绝对路径
    //为空退出
    //Dir= RzSelectFolderDialog1->SelectedPathName;
  //判定是否批量处理
//  if(Form2->DByn)
//  {
//    Dir=Form2->RzButtonEdit5->EditText;
//    Form2->DByn=false;
//  }
//  else
//  {
  if(PLyn)
  {
     Dir=Form1->PLstr;
  }
  else
  {
    if(RzSelectFolderDialog1->Execute())
    {
     Dir =RzSelectFolderDialog1->Directory;
     //Form5->RzMaskEdit1->EditText=RightStr(Dir,3);
     //RzMaskEdit1->EditText= RightStr(Dir,3);
    }
    else
      return;
  }
//  }

  //-----------------------
   if (Dir.Length()==0)
      return;

    //++++++++++++++++++++++++++++++++++++++++++++
     //计算时间
     clock_t start,end,dtStart;
     start=clock();
     //
     RzProgressBar1->Percent=0;
     //++++++++++++++++++++++++++++++++++++++++++++
    int i,num,Lnum;
    Lnum=ListView1->Items->Count;

    TListItem *pItem=0;
   TSearchRec   sr;
   //int iAttributes=0x0000003F;

   if   (FindFirst(Dir+"\\*.txt",faAnyFile,sr)   ==   0)
      {

            ListView1->OwnerData=true;
            //const int iListViewCount=count;
                     //必须指定,以使ListView知道其虚拟数据量
            //保存数据
            TStringList *Xtmp=new TStringList;
            //Xtmp->Delimiter=' ';
            Xtmp->Clear();
//      ListView1->Items->BeginUpdate();
          do
          {
             int LScount=m_lvDataVector.size();//ListView1->Items->Count ;
//                 pItem=ListView1->Items->Add();
//                 pItem->Caption=Lnum+1;
//                 pItem->SubItems->Add(sr.Name);
//                 pItem->SubItems->Add("***"); //注数
//                 pItem->SubItems->Add(Dir+"\\"+sr.Name); //注数
//                 pItem->SubItems->Add("*");
//                 pItem->SubItems->Add("*");
//                 pItem->SubItems->Add("*");
//                 pItem->SubItems->Add("*");
//                 //
//                 ListView1->Items->Item[Lnum]->ImageIndex=5;
//                 ListView1->Items->Item[Lnum]->Checked=true;
                  //sss->Add(sr.Name);
            //载入文本数据
            Xtmp->LoadFromFile(Dir+"\\"+sr.Name );
            ListView1->Items->Count=Xtmp->Count+LScount;
            //
            for(int Di =0;Di Count;Di++)
            {
                ListViewData *plvData=new ListViewData;
                plvData->Caption=String(LScount+Di+1);           //   AnsiString().sprintf("%03d",LScount+Di+1);
                plvData->SubItems1=Xtmp->Strings[Di] ;              //OpenDialog1->Files->Strings[i];
                plvData->SubItems2="";               //ExtractFileName(OpenDialog1->Files->Strings[i]);
                plvData->DDnum="***";
                //plvData->SubItems2=IntToStr((xsx->Strings[i].Length()+1)/4);
                plvData->stateindex=1;
                //plvData-> SubItems3   = IntToStr((xsx->Strings[i].Length()+1)/4);
                m_lvDataVector.push_back(plvData);           //向vector中添加一项
                //delete plvData;
            }

                  Lnum+=1;
                  //++++++++++++++++++++++++++++++++++++++++++++
                   if(Lnum<100)
                   RzProgressBar1->Percent=Lnum;
                   Application->ProcessMessages();
                  //++++++++++++++++++++++++++++++++++++++++++++
          } while(FindNext(sr) == 0);
          FindClose(sr);
//          ListView1->Items->EndUpdate();
      }
//   Lnum=ListView1->Items->Count;
   //PageControl1->ActivePageIndex=0;
     // +++++++++++++++++++++++++++++++++++++++++++++++
     //操作完成计时
     end=clock();
     dtStart=end-start;
     dtStart=end-start;
     float dSec=float(dtStart)/1000;
     RzProgressBar1->Percent=100;
     RzStatusPane1->Caption="预导入大底:"+String(m_lvDataVector.size())+" 个";
     ListView1->Columns->Items[0]->Caption="id ["+String(m_lvDataVector.size())+"]";
     RzStatusPane2->Caption =
        "耗时:"+FloatToStrF(dSec,ffFixed,4,3)+" 秒 ";

相关内容

热门资讯

我来教大家“掼蛋大师辅助器ap... 亲,掼蛋大师这款游戏可以开挂的,确实是有挂的,。但是开挂要下载第三方辅助软件,掼蛋大师的开挂软件,名...
我来教大家“开心联盟辅助器ap... 您好,开心联盟这款游戏可以开挂的,确实是有挂的,需要了解加微{7198902}很多玩家在这款游戏中打...
我来教大家“友愉棋牌辅助器ap... 您好,友愉棋牌这款游戏可以开挂的,确实是有挂的,需要了解加微{7198902}很多玩家在这款游戏中打...
我来教大家“全盛棋牌辅助器ap... 亲,全盛棋牌这款游戏可以开挂的,确实是有挂的,。但是开挂要下载第三方辅助软件,全盛棋牌的开挂软件,名...
我来教大家“情怀三三麻将辅助器... 我来教大家“情怀三三麻将辅助器app官方下载最新版本更新”详细分享开挂一、情怀三三麻将AI软件牌型概...
我来教大家“无锡好运麻将辅助器... 亲,无锡好运麻将这款游戏可以开挂的,确实是有挂的,。但是开挂要下载第三方辅助软件,无锡好运麻将的开挂...
我来教大家“推筒子辅助器app... 您好,推筒子这款游戏可以开挂的,确实是有挂的,需要了解加微{7198902}很多玩家在这款游戏中打牌...
我来教大家“比奇堡辅助器app... 我来教大家“比奇堡辅助器app官方下载最新版本更新”详细分享开挂1、让任何用户在无需AI插件第三方神...
我来教大家“新兴茶苑辅助器ap... 我来教大家“新兴茶苑辅助器app官方下载最新版本更新”详细分享开挂1、让任何用户在无需AI插件第三方...
我来教大家“欢乐互动辅助器ap... 我来教大家“欢乐互动辅助器app官方下载最新版本更新”详细分享开挂1、让任何用户在无需AI插件第三方...
我来教大家“东方互娱辅助器ap... 亲,东方互娱这款游戏可以开挂的,确实是有挂的,。但是开挂要下载第三方辅助软件,东方互娱的开挂软件,名...
我来教大家“天天乐清麻将辅助器... 我来教大家“天天乐清麻将辅助器app官方下载最新版本更新”详细分享开挂一、天天乐清麻将AI软件牌型概...
我来教大家“唐三彩辅助器app... 我来教大家“唐三彩辅助器app官方下载最新版本更新”详细分享开挂一、唐三彩AI软件牌型概率发牌机制”...
我来教大家“Y0辅助器app官... 我来教大家“Y0辅助器app官方下载最新版本更新”详细分享开挂一、Y0AI软件牌型概率发牌机制”必胜...
我来教大家“天天互娱辅助器ap... 亲,天天互娱这款游戏可以开挂的,确实是有挂的,。但是开挂要下载第三方辅助软件,天天互娱的开挂软件,名...
我来教大家“悟空竞技麻将辅助器... 亲,悟空竞技麻将这款游戏可以开挂的,确实是有挂的,。但是开挂要下载第三方辅助软件,悟空竞技麻将的开挂...
我来教大家“情怀开化麻将辅助器... 我来教大家“情怀开化麻将辅助器app官方下载最新版本更新”详细分享开挂一、情怀开化麻将AI软件牌型概...
我来教大家“龙炎互娱辅助器ap... 我来教大家“龙炎互娱辅助器app官方下载最新版本更新”详细分享开挂一、龙炎互娱AI软件牌型概率发牌机...
我来教大家“闲逸碰胡辅助器ap... 亲,闲逸碰胡这款游戏可以开挂的,确实是有挂的,。但是开挂要下载第三方辅助软件,闲逸碰胡的开挂软件,名...
我来教大家“友聚麻将辅助器ap... 我来教大家“友聚麻将辅助器app官方下载最新版本更新”详细分享开挂一、友聚麻将AI软件牌型概率发牌机...