写作和阅读inifiles订购

0 delphi ini

我想知道如何编写Inifile以便我可以按顺序读取它.

首先编写它:假设我有2个字符串要保存(名称和姓氏).

这是一个按钮.因此每次都会点击它:

Ini.WriteString(person1, 'Name', Name.text);
Ini.WriteString(person1, 'Lastname', Lastname.text);
Run Code Online (Sandbox Code Playgroud)

如何在每次添加新人时更改此人1.所以下次person2,person3等.怎么可能?我必须看看前面所说的内容吗?还是会记得吗?也许如果我理解这一点,那么从文件中读取内容将会同样适用.

亲切的问候,谢谢

And*_*and 5

我想你想将n个数据项存储在INI文件中.我一直这样做 - 这很容易.首先,保存是微不足道的,但当然,确切的过程取决于从何处获取数据.如果你有一个字符串的两个阵列,例如(让我们称他们为FirstNamesLastNames),那么你就去做

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)

代替.