Полагаю, вы хотите хранить 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;
Чтобы прочитать (неизвестное количество элементов), сделайте что-то вроде
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;
Обратите внимание, что 'Names'
- произвольное имя раздела в файле INI, в котором вы храните данные.
Обновление
Если вы просто хотите сохранить элементы при нажатии кнопки, почему бы не сделать
private
{ Private declarations }
n: integer;
и
procedure TForm1.FormCreate(Sender: TObject);
begin
n := 0;
end;
, а затем
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;
Если вместо этого вы предпочитаете иметь раздел для элемента, выполните
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;
вместо.