如何历遍INI文件,将内容逐行读取到ListView中呢?
INI文件有N行,1列。
如何实现历遍整个INI文件,将N行分别读取到LISTVIEW
反之如何将ListView中N行内容写入INI文件中呢?
[解决办法]
[解决办法]
先用下面的方法读取所有的节点
TIniFile *ini = new TIniFile("C:\\config.ini");
TStrings *sg = new TStringList;
ini->ReadSections(sg);
ShowMessage(sg->Text);
然后再循环sg->Count;
按照上面读节点的方法去取数据
[解决办法]
仔细考虑了一下你的问题,发现Ini文件它的管理方式是通过节与键来管理其内容的,如果你要读取指定行的数据,而不是通过节与键来取得键值,这个你通过fgets读取即可,因为ini也可以使用的.
后来想了想通过<inifiles.hpp>提供的方式也可以只不过有点麻烦,但可以直接读取键值,后面就不用分离键值的步骤了.
另外你需要注意ini文件的键值是不能分行的,否则你使用<inifiles.hpp>提供的方法就不可能得到,那你真的需要fgets或其它方式取得了.
废话很多代码是主要的
- C/C++ code
//读取指定行的键值,在指定行插入数据.#include <inifiles.hpp>void __fastcall TForm1::ctionClick(TObject *Sender){ TIniFile *regini;regini=new TIniFile (GetCurrentDir()+"\\config1.ini");//ok=regini->ReadString("Option","Data","");//catalog=regini->ReadString("Option","Catalog","");//server=regini->ReadString("Option","Data Source","");TStringList* strSections = new TStringList;regini->ReadSections(strSections);int readnum=0;for(int i=0;i<strSections->Count;i++){ readnum ++; TStringList* strIdent = new TStringList; regini->ReadSection(strSections->Strings[i],strIdent); for(int j=0;j<strIdent->Count;j++) { readnum ++ ; if(readnum == 10) //读取第十行的键值,注意此行不能是Section位置,否则无效果 { String str = regini->ReadString(strSections->Strings[i], strIdent->Strings[j],""); //在第十一行插入数据 //需要注意当前小节(Section)不能有ydlchina这个键值,否则它会改写,而不是增加 regini->WriteString(strSections->Strings[i], "ydlchina","ydlchna添加值");//改成ListView的值即可 Memo1->Lines->Add(str); } } delete strIdent;}delete strSections;delete regini;}//---------------------------------------
[解决办法]