一次读取INI中的部分内容 - C++ Builder / Windows SDK/API
ini文件内容如下:
[Items]
CCA
CCB
CCC
CC2
读取Items下面的内容到ListBox里面.
如何操作呢?
[解决办法]
#include <inifiles.hpp>TIniFile *ini = new TIniFile("D:\\ccrun\\123.ini");TStringList *lst = new TStringList;ini->ReadSection("Items", lst);for (int i = 0; i < lst->Count; i++){ Memo1->Lines->Add(String().sprintf( "%s=%s", lst->Strings[i], ini->ReadString("Items", lst->Strings[i], "") ));}delete lst;delete ini;
[解决办法]
如果是没有等号的这种,就不是标准的INI格式,那么TIniFile类解析可能就认为是无效的数据段。
这种情况下,你还是用TStringList载入文件,然后遍历Strings[i],再进行分析。
[解决办法]
INI格式必须是key=value对。楼主的不标准。不过想偷懒的话还是可以用Windows的API来做一些解析工作,比如:
char buf[1000]; //要足够大,能存下Items段下的所有内容 GetPrivateProfileSection("Items", buf, 1000, "D:\\ccrun\\123.ini"); for(int i=0; i<1000 && buf[i]; i+=strlen(buf)+1) { Memo1->Lines->Add(&buf[i]); }
[解决办法]
那要你自己去处理掉了。
还有,ini文件中是以#为注释的。
你的文件本来就不是标准的INI文件,所以,不能用INI的方式来处理了。
你只能是每一行都要判断一下是不是存在//,然后把后面的删除就是了。
还是用TStringList来装载,然后遍历一次吧。