gpt4 book ai didi

delphi - 如何在delphi 7中将INI节分配给记录

转载 作者:行者123 更新时间:2023-12-03 15:47:12 25 4
gpt4 key购买 nike

抱歉我没说清楚...让我们再试一次

我有一个记录类型:

MyRecord = Record
Name: string;
Age: integer;
Height: integer;
several more fields....

和一个 INI 文件:

[PEOPLE]
Name=Maxine
Age=30
maybe one or two other key/value pairs

我想做的就是使用 INI 文件中的数据加载记录。

我将 INI 中的数据存储在 TStringList 中,我希望能够循环遍历 TStringList 并仅分配/更新 TStringList 中具有键值对的记录字段。

查尔斯

最佳答案

所以你有一个包含内容的 INI 文件

[PEOPLE]
Name=Maxine
Age=30

并希望将其加载到由

定义的记录中
type
TMyRecord = record
Name: string;
Age: integer;
end;

?那很容易。只需将 IniFiles 添加到单元的 uses 子句中,然后执行

var
MyRecord: TMyRecord;

procedure TForm1.Button1Click(Sender: TObject);
begin
with TIniFile.Create(FileName) do
try
MyRecord.Name := ReadString('PEOPLE', 'Name', '');
MyRecord.Age := ReadInteger('PEOPLE', 'Age', 0);
finally
Free;
end;
end;

当然,MyRecord 变量不必是全局变量。它也可以是局部变量或类中的字段。但这当然取决于您的具体情况。

简单概括

一个稍微有趣的情况是,如果您的 INI 文件包含多个人,例如

[PERSON1]
Name=Andreas
Age=23

[PERSON2]
Name=David
Age=40

[PERSON3]
Name=Marjan
Age=49

...

并且您想将其加载到 TMyRecord 记录数组中,那么您可以这样做

var
Records: array of TMyRecord;

procedure TForm4.FormCreate(Sender: TObject);
var
Sections: TStringList;
i: TIniFile;
begin
with TIniFile.Create(FileName) do
try
Sections := TStringList.Create;
try
ReadSections(Sections);
SetLength(Records, Sections.Count);
for i := 0 to Sections.Count - 1 do
begin
Records[i].Name := ReadString(Sections[i], 'Name', '');
Records[i].Age := ReadInteger(Sections[i], 'Age', 0);
end;
finally
Sections.Free;
end;

finally
Free;
end;
end;

关于delphi - 如何在delphi 7中将INI节分配给记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6443896/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com