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

一次读取INI中的部分内容解决办法

2012-03-13 
一次读取INI中的部分内容 - C++ Builder / Windows SDK/APIini文件内容如下:[Items]CCACCBCCCCC2读取Items

一次读取INI中的部分内容 - C++ Builder / Windows SDK/API
ini文件内容如下:

[Items]
CCA 
CCB
CCC
CC2

读取Items下面的内容到ListBox里面.
如何操作呢?

[解决办法]

C/C++ code
#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来做一些解析工作,比如:
C/C++ code
    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来装载,然后遍历一次吧。

热点排行