Memo o ini

0

Zapis i odczyt pliku ini mam zrobiony tak:

Zapis do pliku ini:

var INI : TINIFile;

procedure TUstawienia.Button1Click(Sender: TObject);
begin
INI := TINIFile.Create(ExtractFilePath(Application.ExeName) + 'data.ini');
  try
  
  INI.WriteString('Main1', 'tekst', memo.Text);
  finally
    INI.Free;
  end;
end;

odczyt


procedure TForm1.FormCreate(Sender: TObject);
begin

INI := TINIFile.Create(ExtractFilePath(Application.ExeName) + 'data.ini');
  try

    memo.Text := INI.ReadString('Main1', 'text', '');
  finally
    INI.Free;
  end;

Wszystko było by fajnie ale zapisuje wszystkie linie z memo, ale odczytuje tylko pierwszą
Co mam z tym zrobić

0

Zrób odczyt/zapis w pliku tekstowym.

0

No właśnie ja chce INI.
Zamiast memo może być jakiś inny komponent tylko żeby była możliwość zapisu w kliku liniach

0

nie możesz zrobić zapisu kilku lini

budowa pliku ini twojego
np

[main1]
tekst=teskt z memo

jak mozesz zapisac kilka lini do "tekst"

zrób

INI := TINIFile.Create(ExtractFilePath(Application.ExeName) + 'data.ini');
  try

  INI.WriteString('Main1', 'tekst', memo1.lines[0]);
  INI.WriteString('Main1', 'tekst1', memo1.lines[1]);
  INI.WriteString('Main1', 'tekst2', memo1.lines.[2]);

  finally
    INI.Free;
  end;

itp i potem to odczytaj

0
var 
INI : TINIFile;
I: Integer;
//----- Zapis ----
procedure TUstawienia.Button1Click(Sender: TObject);
begin
INI := TINIFile.Create(ExtractFilePath(Application.ExeName) + 'data.ini');
try
INI.WriteInteger('Main1', 'Count', Memo.Lines.Count);
for  i:=0 to Memo1.Lines.Count-1 do
INI.WriteString('Main1', 'tekst' + IntToStr(i), memo.Lines[i]);
finally
INI.Free;
end;
end;

//----- Odczyt ----
procedure TForm1.FormCreate(Sender: TObject);
Var
Count: Integer;
begin
INI := TINIFile.Create(ExtractFilePath(Application.ExeName) + 'data.ini');
try
Memo.Lines.Clear;
Count := INI.ReadInteger('Main1', 'Count', 0);
for i:=0 to Count-1 do
memo.Lines.Add(INI.ReadString('Main1', 'text' + IntToStr(i), ''));

finally
INI.Free;
end;

Nie sprawdzałem ale powinno byc ok

0
puchi napisał(a)

INI.WriteInteger('Main1', 'Count', Memo.Lines.Count);

Tej lini nie przyjmuje a dokładnie .Count

0

Jak nie działa? Co to znaczy, wyskakuje wyjątek, nie kompiluje się czy co? Powinno być wszystko
w porządku. Poniżej masz poprawiony kod, który dla pewności usunie poprzednią sekcje i zapis oraz
odczyt przeprowadzi od identyfikatora tekst1, a nie tekst0. Choć to tylko taka kosmetyczna zmiana.

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var
  Ini : TINIFile;
  I : Integer;
begin
  INI := TIniFile.Create(ExtractFilePath(Application.ExeName) + 'data.ini');
    try
    Ini.EraseSection('Main1');
    Ini.WriteInteger('Main1', 'Count', Memo.Lines.Count);
       for I := 0 to Memo.Lines.Count -1 do
       INI.WriteString('Main1', 'tekst' + IntToStr(I +1), Memo.Lines[I]);
    finally
    Ini.Free;
    end;
end;

procedure TForm1.FormCreate(Sender: TObject);
Var
  Ini : TINIFile;
  Count, I : Integer;
begin
  Ini := TIniFile.Create(ExtractFilePath(Application.ExeName) + 'data.ini');
    try
    Memo.Lines.Clear;
    Count := INI.ReadInteger('Main1', 'Count', 0);
       for I := 0 to Count -1 do
       Memo.Lines.Add(Ini.ReadString('Main1', 'tekst' + IntToStr(I +1), ''));
    finally
    Ini.Free;
    end;
end;

1 użytkowników online, w tym zalogowanych: 0, gości: 1