var
AMIni:TIniFile; i:integer; DefSection:TStrings;
begin
AMIni:=TIniFile.Create('setam.ini');
DefSection:=TStringList.Create;
DefSection.Text:=AmIni.ReadString('Server','defaultitem','');
for i:= 0 to DefSection.count - 1 do
showmessage(defsection[i]);
defsection.free;
amini.free;
end;[Server]
defaultitem='Host'#$D#$A'port'这样做为什么不可以啊???????????、
DefSection:TStrings中理论上应该是两个值Host和Server为什么,是一个字符串啊????
AMIni:TIniFile; i:integer; DefSection:TStrings;
begin
AMIni:=TIniFile.Create('setam.ini');
DefSection:=TStringList.Create;
DefSection.Text:=AmIni.ReadString('Server','defaultitem','');
for i:= 0 to DefSection.count - 1 do
showmessage(defsection[i]);
defsection.free;
amini.free;
end;[Server]
defaultitem='Host'#$D#$A'port'这样做为什么不可以啊???????????、
DefSection:TStrings中理论上应该是两个值Host和Server为什么,是一个字符串啊????
SysUtilsfunction StrPas(const Str: PChar): string;
我前段时间写程序也遇到ini文件的问题了
TSrings.txt把所有合并起来以#$D#$A来分隔。比如defaultitem='Host'#$D#$A'port'#$D#$A
当我读到这样的一个字符串时就赋给TSrings.txt自动折分字符串分别就得到了一个Host和port字符串,这个想法没有问题吧?关于ini文件。ReadString(const Section, Ident, Default: String)
现在是Ident不确定,即不知道有几个和他们的名字,
所以就用了默认的defaultitem就是有一个Host和一个Port
[Server]
defaultitem='Host'#$D#$A'port'
Host=127.0.0.1
Port=20000假如在手动在ini文件中增加一个新值如下
[Server]
defaultitem='Host'#$D#$A'port'#$D#$A
Host=127.0.0.1
Port=20000
computername=test//新增加的
那就把defaultitem修改为
defaultitem='Host'#$D#$A'port'#$D#$A'computername'#$D#$A
这样在程序中读写文件的时就不需要知道Ident名字,这个功能已经实现了,用逗号或其它分隔符代替#$D#$A然后用程序截取就可以了。
问一个在不知道Ident的情况下,还有没有更好的办法读写ini???
用DefSection:=AmIni.ReadString('Server','defaultitem','');
试试