Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Ini Dateien - ReadSections (https://www.delphipraxis.net/161824-ini-dateien-readsections.html)

Destroyer446 22. Jul 2011 13:07

Ini Dateien - ReadSections
 
Ich habe mir eine Funktion gemacht um ´Datums´ aus einer ini zu lesen.
Die ´Datums´ sind die Sections also die [Section] im Format [01.01.2011].
Ich will alle ´Datums´ in eine TStringList laden.
Der gibt mir hier aber ein ´AccesViolation´ Error.
Was ust da Falsch?
Delphi-Quellcode:
function TZeit.LadeDatums: TStringList;
begin
 Ini.ReadSections(Result);
end;
Danke!

Luckie 22. Jul 2011 13:11

AW: Ini Dateien - ReadSections
 
Existiert das Ini-Objekt? Existiert das StringList-Objekt? Das sind alles Fragen, die man schon vorher mit dem Debugger überprüfen kann.

himitsu 22. Jul 2011 13:38

AW: Ini Dateien - ReadSections
 
Zitat:

Existiert das StringList-Objekt?
Bei der Ini weiß man es nicht, aber die TStringList existiert garantiert nicht.
Der Objektzeiger (Result) zeigt nur zufällig sonstwo hin, da er nichtmal initialisiert ist, was der Compiler eigentlich auch bemängeln sollte.

Bjoerk 22. Jul 2011 13:53

AW: Ini Dateien - ReadSections
 
ReadSections gibt TStrings zurück.

Delphi-Quellcode:
function LadeDatum: TStrings;
begin
  Ini.ReadSections(Result);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  SL: TStringList;
begin
  Ini:= TIniFile.Create( .. );
  SL:= TStringList.Create;

  SL.AddStrings(LadeDatum);

  ...
 
  SL.Free;
  ini.Free;
end;

himitsu 22. Jul 2011 14:18

AW: Ini Dateien - ReadSections
 
Zitat:

Zitat von Bjoerk (Beitrag 1113062)
ReadSections gibt TStrings zurück.

Nein, gibt es nicht.
Es befüllt eine vorher "existierende" Stringliste.

schlecki 22. Jul 2011 14:22

AW: Ini Dateien - ReadSections
 
Zitat:

Zitat von Destroyer446 (Beitrag 1113052)
Delphi-Quellcode:
function TZeit.LadeDatums: TStringList;
begin
 Ini.ReadSections(Result);
end;

Man sollte auf Funktionen verzichten, die ein Objekt erzeugen und zurückliefern. Es ist meist nicht klar, wer das Objekt dann wieder abräumt. Generell sollte man darauf achten, wer ein Objekt erzeugt, der sollte es auch wieder freigeben.

Delphi-Quellcode:
procedure TZeit.LadeDaten(const List: TStrings);
begin
  Ini.ReadSections(List);
end;
und dann irgendwo

Delphi-Quellcode:
myList := TStringList.Create;
try
  zeit.LadeDaten(myList);
  tuWasMitDaten(myList);
finally
  myList.Free;
end;

Bjoerk 22. Jul 2011 14:28

AW: Ini Dateien - ReadSections
 
Zitat:

Zitat von himitsu (Beitrag 1113065)
Zitat:

Zitat von Bjoerk (Beitrag 1113062)
ReadSections gibt TStrings zurück.

Nein, gibt es nicht.
Es befüllt eine vorher "existierende" Stringliste.

So ist es.

Delphi-Quellcode:
procedure TMemIniFile.ReadSections(Strings: TStrings);
procedure TCustomIniFile.ReadSections(const Section: string; Strings: TStrings);
procedure TIniFile.ReadSections(Strings: TStrings);


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:01 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