作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
抱歉我没说清楚...让我们再试一次
我有一个记录类型:
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/
我是一名优秀的程序员,十分优秀!