tinifile+tstringlist(100分)

  • 主题发起人 主题发起人 pyk1
  • 开始时间 开始时间
P

pyk1

Unregistered / Unconfirmed
GUEST, unregistred user!
各位富翁,大家好。一个问题我琢磨了很久,但没有结果。如何能将Ini与Tstringlist的功能结合起来呢?
问题:如何保存为如下格式的文本,如下:
[A]
aasfasfasdfsd
sdf
asfasf

sdfsf
gsdgsf
[C]
adffgssf
sdfgasdfg
sasdfdsfsdfsdf
使用的时候,如需要B小节,就将B小节下的句子
sdfsf
gsdgsf
读出来。
 
www.source520.com 再次更新近3万代码,全部免费免注册狂下载
 
分别存入3个TStringList中就可以了阿
 
to dxiaoliang:
如果有几十个节点,那就存为几十个文本文件么?不可取。
 
只有一个Tstringlist即可,假设您的ini文件为main.ini
方法如下
1、存入的字符串之前加上标志:
[A]aasfasfasdfsd
[A]sdf
[A]asfasf
sdfsf
gsdgsf
[C]adffgssf
[C]sdfgasdfg
[C]sasdfdsfsdfsdf
2、读入时 定义两个Tstringlist变量lsta,lstb
lsta..LoadFromFile('main.ini');
flag:='[A]'
for i=0 to lsta.count do
begin
IF COPY(LSTA.STRING,1,3)=FLAG THEN LSTB.ADD(copy(LSTA.STRING,4,50));
end;
 
参考一下TIniFile的源码嘛。
 
to mchestnut:
您好。
这样变通倒是也行,不知还有没有别的好方法。
 
你若愿意的话,在每项后加个"="
如:
[A]
aasfasfasdfsd=
sdf=
asfasf=
可以用以下现成的函数读取
var
AppIni: TIniFile;
begin
AppIni := TIniFile.Create('c:/my.ini');
AppIni.ReadSections(ListBox1.Items);
AppIni.ReadSection('A',Listbox2.Items);//这个。
AppIni.ReadSectionValues('B',ListBox3.Items);
AppIni.Free;
end;
 
ReadSections 读出所有 节点.. 然后在每个节点中读出细节.
 
用if做一下判断不就可以了,
如果发现下一个包含有“[]”的值,那就说明到了下一个节点了。
 
通过行的方式就行了。
技术支持QQ:13686277559
 
var MS:TStringList;
Ini:TIniFile;
i:Integer;
begin
MS:=TStringList.Create;
ini:=TIniFile.Create(ExtractFilePath(Paramstr(0))+'Config.ini');
ini.readSection('B',MS);
For i:=0 to Ms.Count -1 do
ShowMessage(ms);
ini.free;
MS.Free;
end;
 
晕!
这么个问题才有2个人答对。
 
根据需要自己写个函数或者组件就可以呗
 
我用我的笨办法解决了。使用Inifile文件。
 
后退
顶部