Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Ini Datei mit Bigini in Listview einlesen (https://www.delphipraxis.net/85864-ini-datei-mit-bigini-listview-einlesen.html)

Heino Piper 6. Feb 2007 02:47


Ini Datei mit Bigini in Listview einlesen
 
Moin,
Ich habe folgenden funktionierenden Code
Delphi-Quellcode:
procedure TdfmForm1.FormShow(Sender: TObject);
var
  ini: TIniFile;
  x: Integer;
  Eintrag: TListItem;
  sl: TStringList;
begin
  ini := TiniFile.Create(ExtractFilePath(ParamStr(0)) + 'Dateiname.ini');
  sl := TStringList.Create;
  try
    listview1.Clear;
    for x := 1 to 100 do
    begin
      Eintrag := Listview1.Items.Add;
      Eintrag.Caption := ini.ReadString(IntToStr(x), 'Test', '');
      Eintrag.SubItems.Add(ini.ReadString(IntToStr(x), 'Test-1', ''));
      Eintrag.SubItems.Add(ini.ReadString(IntToStr(x), 'Test-2', ''));
  end;
finally
    ini.Free;
end;
soweit so gut, da meine ini größer wird als 64k habe ich es versucht mit Bigini
und habe folgendes zu meinem Projekt hinzugefügt:

uses Bigini;

Delphi-Quellcode:
private
    { Private-Deklarationen }
    BigIniFile : TBiggerIniFile;
    FFileName : String;
Delphi-Quellcode:
procedure TForm2.FormCreate(Sender: TObject);
begin
  FFileName := ExtractFilePath(Application.ExeName)+'Rebsorten.ini';
  BigIniFile := TBiggerIniFile.Create(''); { no filename now}
end;
und die procedure TdfmForm1.FormShow(Sender: TObject) so abgeändert:
Delphi-Quellcode:
procedure TForm2.FormShow(Sender: TObject);
var
  x: Integer;
  Eintrag: TListItem;
  sl: TStringList;
begin
  sl := TStringList.Create;
  try
    listview1.Clear;
    for x := 1 to 100 do
    begin
      Eintrag := Listview1.Items.Add;
      Eintrag.Caption := BiginiFile.ReadString(IntToStr(x), 'Test', '');
      Eintrag.SubItems.Add(BiginiFile.ReadString(IntToStr(x), 'Test-1', ''));
      Eintrag.SubItems.Add(BiginiFile.ReadString(IntToStr(x), 'Test-2', ''));
    end;
finally
    BiginiFile.Free;
end;
end;
Ich habe schon im Netz und in allen Foren nach einem Beispiel zum Einlesen einer ini Datei
mit Bigini in ein Listview gesucht aber leider nichts gefunden.
Die Datei Bigini.pas habe ich auch in meinem Projektordner gelegt.
Beim Aufruf bleibt mein Listview jedoch leer.
Das Demoprogramm von Bigini hilft mir auch nicht weiter, weil dort nicht das Einlesen als Procedure
nicht vorhanden ist.

Vielen Dank im voraus Heino

ringli 6. Feb 2007 05:59

Re: Ini Datei mit Bigini in Listview einlesen
 
Ich kenne BigIni jetzt zwar nicht, aber warum machst du es nicht so:

Delphi-Quellcode:
procedure TdfmForm1.FormShow(Sender: TObject);
var
  BigIniFile : TBiggerIniFile;
  x: Integer;
  Eintrag: TListItem;
  sl: TStringList;
begin
  BigIniFile := TBiggerIniFile.Create(ExtractFilePath(ParamStr(0)) + 'Dateiname.ini');
  sl := TStringList.Create;
  try
    listview1.Clear;
    for x := 1 to 100 do
    begin
      Eintrag := Listview1.Items.Add;
      Eintrag.Caption := BigIniFile.ReadString(IntToStr(x), 'Test', '');
      Eintrag.SubItems.Add(BigIniFile.ReadString(IntToStr(x), 'Test-1', ''));
      Eintrag.SubItems.Add(BigIniFile.ReadString(IntToStr(x), 'Test-2', ''));
  end;
finally
    BigIniFile.Free;
end;

marabu 6. Feb 2007 06:56

Re: Ini Datei mit Bigini in Listview einlesen
 
Guten Morgen,

es ist schon richtig, dass TIniFile eine Größenbeschränkung aufweist und auch sonst ist diese Klasse etwas antiquiert - immerhin kapselt sie eine Win3-Funktionalität. Die verschiedenen Ersatzlösungen sind in der Regel fast genau so alt. Delphi bringt eine eigene Variante von TIniFile für diese "Big Ini-Files" mit - TMemIniFile. Es ist also kaum noch nötig auf andere Komponenten auszuweichen. Der wesentliche Unterschied, neben dem Wegfall der Größenbeschränkung, ist die gepufferte Arbeitsweise: Lese- und Schreiboperationen finden auf einer Kopie im Hauptspeicher statt und müssen mit UpdateFile() persistent gemacht werden.

Aber eigentlich möchte ich auf etwas anderes hinaus. Wenn ich die Daten für eine ListView schon als Textdatei ablege, dann würde ich eher ein CSV-Format einsetzen. Demo hier.

Grüße vom marabu


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:04 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz