首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

请问一个TStringList的有关问题

2012-03-19 
请教一个TStringList的问题我以下代码,是要在一个.dat文本文件中找到一个行,然后将它及其下的2行删除:int

请教一个TStringList的问题
我以下代码,是要在一个.dat文本文件中找到一个行,然后将它及其下的2行删除:

  int Index;
  if (OpenDialog1->Execute())
  {
  TStringList *pList=new TStringList;
  pList->LoadFromFile("dir.dat");
  pList->Sort();
  if (pList->Find(OpenDialog1->FileName, Index))
  {
  pList->Delete(Index);
  pList->Delete(Index+1);
  pList->Delete(Index+2); 
  }
  pList->SaveToFile("dir.dat");
  delete pList;
  }

dir.dat文件的内容如下:
E:\temp\aboutb5.bmp
3949464
F
E:\temp\Aboutb5.jpeg
3968280
F
E:\temp\JM2.jpg
3968320
F
E:\temp\B4.BAT
3968360
F
E:\temp\JM11.jpg
3952568
F

比如,OpenDialog1->FileName的值是E:\temp\JM2.jpg,应该是将
E:\temp\JM2.jpg
3968320
F
三行都删除,但事实不是,结果是只将E:\temp\JM2.jpg一行删除,而且,另存的dir.dat文件内容全变了。
如果我将这三句:
  pList->Delete(Index);
  pList->Delete(Index+1);
  pList->Delete(Index+2); 
改为:
  ShowMessage(pList->Strings[Index]);
  ShowMessage(pList->Strings[Index+1]);
  ShowMessage(pList->Strings[Index+2]);
也只有第一行显示是正确的,其他2行显示的内容都不对。请问,这是怎么回事?有什么好的解决办法吗?




[解决办法]
应该改为

C/C++ code
int index;    TStringList *pList=new TStringList;    pList->LoadFromFile("D:\\1.dat");    index=pList->IndexOf("E:\\temp\\Aboutb5.jpeg");    for(int i=0;i<3;i++)    {    pList->Delete(index);    }    //pList->Delete(index+1);    //pList->Delete(index+2);    pList->SaveToFile("D:\\2.dat");    delete pList; 

热点排行