Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Hilfe bei Laden einer TStringList (https://www.delphipraxis.net/123424-hilfe-bei-laden-einer-tstringlist.html)

Sebastian92 1. Nov 2008 17:07


Hilfe bei Laden einer TStringList
 
Hey Leute, Ich arbeite an einem Programm, dass Namen von Personen un sinstige Informationen zu diesen in einer TStringList speichern soll und bei Bedarf aufrufen soll. Jetzt habe ich ein Problem mit dem Laden der TStringList. Könnt ihr mir Helfen, das ist mein Quelltext:

Delphi-Quellcode:
implementation

{$R *.DFM}

var Person :TStringList;

procedure Eingabe (var Name,Zusatz :String);
begin
  Name:=Form1.Edit1.Text;
  Zusatz:=Form1.Edit2.Text;
end;

procedure Ausgabe (Name,Zusatz :String);
begin
  Form1.Edit1.Text:=Name;
  Form1.Edit2.Text:=Zusatz;
end;

procedure load (var Name,Zusatz :String);
var s :String;
begin
  Person.loadFromFile('List.dat');
  s:=Person[Form1.ListBox1.ItemIndex];
  Name:=copy(s,1,(pos(s,',')-1));
  s:=copy(s,(pos(s,',')+1),length(s));
  Zusatz:=copy(s,1,(pos(s,',')-1));
end;

function Save (Name,Zusatz :String) :TStringList;
begin
  if FileExists('List.dat')
    then Person.LoadFromFile('List.dat')
    else Person:=TStringList.Create;
  Person.Add(Name+','+Zusatz+',');
  Person.SaveToFile('List.dat');
  Form1.ListBox1.Items.Add(Name);
  Form1.ListBox1.Items.SaveToFile('Namen.dat');
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  Close;
end;

procedure TForm1.Button1Click(Sender: TObject);
var Personenname,Zusatzinfos :String;
begin
  Eingabe(Personenname,Zusatzinfos);
  Save(Personenname,Zusatzinfos);
end;

procedure TForm1.ListBox1Click(Sender: TObject);
var Personenname,Zusatzinfos :String;
begin
  Load(Personenname,Zusatzinfos);
  Ausgabe(Personenname,Zusatzinfos);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Form1.ListBox1.Items.LoadFromFile('Namen.dat');
  if CheckBox1.Checked=true
    then Form1.ListBox1.Items.Clear;
end;

end.
Ich würde mich freuen, wenn mir jemand weiterhelfen könnte,
mfg Sebastian

DeddyH 1. Nov 2008 17:09

Re: Hilfe bei Laden einer TStringList
 
Vielleicht solltest Du uns auch sagen, was das Problem ist. Ich vermute, Du bekommst eine Zugriffsverletzung, da ich nirgends gesehen habe, dass Du die Stringliste überhaupt anlegst.

Die Muhkuh 1. Nov 2008 17:11

Re: Hilfe bei Laden einer TStringList
 
Ich würde noch die Prozeduren zu Methoden machen, dann sparst Du Dir das Form1...

Sebastian92 1. Nov 2008 17:13

Re: Hilfe bei Laden einer TStringList
 
Ja, ich bekomme eine Zugriffsverletzung,
was kann ich dagegen tun?

Die Muhkuh 1. Nov 2008 17:15

Re: Hilfe bei Laden einer TStringList
 
Grob gesagt:

Delphi-Quellcode:
StringList := TStringList.Create
in Deinem Fall musst du das StringList durch Person ersetzen.

Wo man das macht: In dem Fall würde ich FormCreate vorschlagen.

DeddyH 1. Nov 2008 17:15

Re: Hilfe bei Laden einer TStringList
 
Wenn die Stringliste unbedingt eine globale Variable sein soll, solltest Du sie im initialization-Abschnitt anlegen und im finalization-Abschnitt freigeben. D.h., vor das letzte end schreibst Du
Delphi-Quellcode:
initialization
  Person := TStringlist.Create;

finalization
  Person.Free;

Sebastian92 1. Nov 2008 17:18

Re: Hilfe bei Laden einer TStringList
 
Vielen dank, ich werde es gleich ausprobieren :wink:


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