我想知道如何编写Inifile以便我可以按顺序读取它.
首先编写它:假设我有2个字符串要保存(名称和姓氏).
这是一个按钮.因此每次都会点击它:
Ini.WriteString(person1, 'Name', Name.text);
Ini.WriteString(person1, 'Lastname', Lastname.text);
Run Code Online (Sandbox Code Playgroud)
如何在每次添加新人时更改此人1.所以下次person2,person3等.怎么可能?我必须看看前面所说的内容吗?还是会记得吗?也许如果我理解这一点,那么从文件中读取内容将会同样适用.
亲切的问候,谢谢
我想你想将n个数据项存储在INI文件中.我一直这样做 - 这很容易.首先,保存是微不足道的,但当然,确切的过程取决于从何处获取数据.如果你有一个字符串的两个阵列,例如(让我们称他们为FirstNames和LastNames),那么你就去做
for i := 0 to high(FirstNames) do
begin
IniFile.WriteString('Names', 'FirstName' + IntToStr(i), FirstNames[i]);
IniFile.WriteString('Names', 'LastName' + IntToStr(i), LastNames[i]);
end;
Run Code Online (Sandbox Code Playgroud)
要阅读(未知数量的项目),请执行类似的操作
for i := 0 to MaxInt do
if ValueExists('Names', 'FirstName' + IntToStr(i)) then
// Do something with ReadString('Names', 'FirstName' + IntToStr(i))
// and ReadString('Names', 'LastName' + IntToStr(i))
else
break;
Run Code Online (Sandbox Code Playgroud)
请注意,这'Names'是INI文件中用于存储数据的部分的任意名称.
如果您只想在单击按钮时保存项目,为什么不这样做
private
{ Private declarations }
n: integer;
Run Code Online (Sandbox Code Playgroud)
和
procedure TForm1.FormCreate(Sender: TObject);
begin
n := 0;
end;
Run Code Online (Sandbox Code Playgroud)
然后
procedure TForm1.Button1Click(Sender: TObject);
begin
with TIniFile.Create('myfile.ini') do
try
WriteString('Names', 'FirstName' + IntToStr(n), Edit1.Text);
WriteString('Names', 'LastName' + IntToStr(n), Edit2.Text);
inc(n);
finally
Free;
end;
end;
Run Code Online (Sandbox Code Playgroud)
如果您反而希望每个项目都有一个部分,那么
procedure TForm1.Button1Click(Sender: TObject);
begin
with TIniFile.Create('myfile.ini') do
try
WriteString('Name' + IntToStr(n), 'FirstName', Edit1.Text);
WriteString('Name' + IntToStr(n), 'LastName', Edit2.Text);
inc(n);
finally
Free;
end;
end;
Run Code Online (Sandbox Code Playgroud)
代替.
| 归档时间: |
|
| 查看次数: |
5090 次 |
| 最近记录: |