读取INI文件并检索所需信息



我正在寻找一种读取.ini文件的方法,以从中获取服务器主机信息。我让它加载静态数据,这一部分很容易,但我想扩展它,这样我就可以在.ini中添加多个服务器,然后让我的程序按顺序添加它们。

[Data]
Server[1]=tcp/80.7.229.47/7799 // server one
Server[2]=udp/80.7.229.47/7780 // server two
Server[3]=tcp/80.7.229.47/7733 // server three

我希望能够添加多个服务器,这里是1到10个或其他什么,然后显示正确的服务器信息、协议、ip和端口。我已经通过拆分代码做到了这一点,但我不知道如何创建多个服务器。

我在想,也许for循环可以从.ini文件中获取服务器编号:

sData := IniFile.ReadString('Data', 'Server['+ IntToStr(i) +']', '<none>');

有人知道怎么做吗?

在条目名称上去掉方括号:

[Data]
Server1=tcp/80.7.229.47/7799
Server2=udp/80.7.229.47/7780
Server3=tcp/80.7.229.47/7733
sData := IniFile.ReadString('Data', 'Server' + IntToStr(i), '<none>');

要知道有多少服务器,您可以添加一个ServerCount条目,例如:

[Data]
ServerCount=3
Server1=tcp/80.7.229.47/7799
Server2=udp/80.7.229.47/7780
Server3=tcp/80.7.229.47/7733
count := IniFile.ReadInteger('Data', 'ServerCount', 0);
for i := 1 to count do
begin
sData := IniFile.ReadString('Data', 'Server' + IntToStr(i), '<none>');
...
end;

或者,您可以使用IniFile.ReadSection()将所有条目名称获取到本地TStringList中,然后循环使用,例如:

names := TStringList.Create;
try
IniFile.ReadSection('Data', names);
for i := 0 to names.Count-1 do
begin
if StartsText('Server', names[i]) then
begin
sData := IniFile.ReadString('Data', names[i], '<none>');
...
end;
end;
finally
names.Free;
end;

最新更新