Listbox abspeichern?[weitere Frage!!!]

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
jaslaz
Beiträge: 58
Registriert: Sa 28. Aug 2010, 18:30
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit

Listbox abspeichern?[weitere Frage!!!]

Beitrag von jaslaz »

Hallo zusammen,

Mein Problem ist es, dass ich eine Listbox in einer .txt Datei abspeichern will:

Code: Alles auswählen

procedure TForm1.Button5Click(Sender: TObject);
Var liste: Tstrings;
Begin
liste:=Tstringlist.Create;
liste.Add(listbox1.Items[0]);
liste.Add(listbox2.Items[0]);// und so weiter...
liste.SaveToFile(FileNameEdit1.filename);
liste.Free;
end;
Das ist der Code was ist falsch daran?

Danke schon mal im vorraus, Jaslaz.
Zuletzt geändert von jaslaz am Mo 15. Nov 2010, 21:24, insgesamt 2-mal geändert.

Teekeks
Beiträge: 359
Registriert: Mi 27. Mai 2009, 20:54
OS, Lazarus, FPC: OpenSuse11.4 x86 (Lazarus: 0.9.30 FPC 2.4.2)
CPU-Target: x86
Wohnort: Cottbus

Re: Listbox abspeichern?

Beitrag von Teekeks »

Code: Alles auswählen

procedure TForm1.Button5Click(Sender: TObject);
    Var liste: Tstringlist;
    Begin
    liste:=Tstringlist.Create;
    liste.Add(listbox1.Items[0]);
    liste.Add(listbox2.Items[0]);// und so weiter...
    liste.SaveToFile(FileNameEdit1.filename);
    liste.Free;
    end;
TStrings ist nur Virtuell.
Es wäre aber besser gewesen wenn du eine Fehlermeldung mitgegeben hättest.

jaslaz
Beiträge: 58
Registriert: Sa 28. Aug 2010, 18:30
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit

Re: Listbox abspeichern?

Beitrag von jaslaz »

Das bringt auch nichts!

Es gibt keine Fehlermeldung,das programm startet auch aber wenn ich auf den Speicherbutton drücke zeigt das programm eine Errormeldung an.

----------------------------------------------------------------------------------------------
Es geht jetzt doch, nach dem ich Lazarus neu gestartet habe,Danke!

marcov
Beiträge: 1102
Registriert: Di 5. Aug 2008, 09:37
OS, Lazarus, FPC: Windows ,Linux,FreeBSD,Dos (L trunk FPC trunk)
CPU-Target: 32/64,PPC(+64), ARM
Wohnort: Eindhoven (Niederlande)

Re: Listbox abspeichern?[gelöst]

Beitrag von marcov »

Code sieht korrekt aus. Aber nur wenn es tatsächlich ein listbox1.Items[0] gibt. (also wenn assigned(listbox1) and (listbox1.items.count>0) )

jaslaz
Beiträge: 58
Registriert: Sa 28. Aug 2010, 18:30
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit

Re: Listbox abspeichern?[weitere Frage!!!]

Beitrag von jaslaz »

Wie kann ich Abfragen wie viele Zeilen in einer listbox benutzt werden???

Code: Alles auswählen

Var liste: Tstringlist;x:integer;
Begin
liste:=Tstringlist.Create;
 
for x:=0 to 50 do// hier will ich nicht 50 sondern die menge der zeilen in der listbox !
begin
liste.Add(listbox1.items[x]);
liste.Add(listbox2.items[x]);
end;
liste.SaveToFile(FileNameEdit1.filename);
liste.Free;

carli
Beiträge: 657
Registriert: Sa 9. Jan 2010, 17:32
OS, Lazarus, FPC: Linux 2.6.x, SVN-Lazarus, FPC 2.4.0-2
CPU-Target: 64Bit

Re: Listbox abspeichern?[weitere Frage!!!]

Beitrag von carli »

Code: Alles auswählen

Var liste: Tstringlist;x:integer;
Begin
liste:=Tstringlist.Create;
 
for x:=0 to listbox1.items.count-1 do// hier steht nicht 50, sondern die menge der zeilen in der listbox !
begin
liste.Add(listbox1.items[x]);
liste.Add(listbox2.items[x]);
end;
liste.SaveToFile(FileNameEdit1.filename);
liste.Free;
[/quote]

Socke
Lazarusforum e. V.
Beiträge: 3178
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Listbox abspeichern?[weitere Frage!!!]

Beitrag von Socke »

Kann man nicht direkt Folgendes aufrufen?

Code: Alles auswählen

listbox1.Items.SaveToFile(FileNameEdit1.filename);
Solange keine Auswahl getroffen und alle Einträge gespeichert werden, sehe ich keinen Grund, die Referenzzählung für Strings unnötig zu belasten.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

carli
Beiträge: 657
Registriert: Sa 9. Jan 2010, 17:32
OS, Lazarus, FPC: Linux 2.6.x, SVN-Lazarus, FPC 2.4.0-2
CPU-Target: 64Bit

Re: Listbox abspeichern?[weitere Frage!!!]

Beitrag von carli »

Socke hat geschrieben:Kann man nicht direkt Folgendes aufrufen?

Code: Alles auswählen

listbox1.Items.SaveToFile(FileNameEdit1.filename);
Solange keine Auswahl getroffen und alle Einträge gespeichert werden, sehe ich keinen Grund, die Referenzzählung für Strings unnötig zu belasten.
Er will die Zeilen ja vor dem Speichern verdoppeln (lese ich zumindest aus dem Code heraus)

Teekeks
Beiträge: 359
Registriert: Mi 27. Mai 2009, 20:54
OS, Lazarus, FPC: OpenSuse11.4 x86 (Lazarus: 0.9.30 FPC 2.4.2)
CPU-Target: x86
Wohnort: Cottbus

Re: Listbox abspeichern?[weitere Frage!!!]

Beitrag von Teekeks »

Auch falsch, er speichert in liste abwechselnd immer eine Zeile von ListBox1 und eine von ListBox2, also verschiedene Zeilen.

Socke
Lazarusforum e. V.
Beiträge: 3178
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Listbox abspeichern?[weitere Frage!!!]

Beitrag von Socke »

Teekeks hat geschrieben:Auch falsch, er speichert in liste abwechselnd immer eine Zeile von ListBox1 und eine von ListBox2, also verschiedene Zeilen.
Da hab ich wohl was überlesen;
An irgendeiner Stelle sollte aber sichergestellt werden, dass beide Listen auch die gleiche Länge haben
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Targion
Beiträge: 688
Registriert: Mi 3. Okt 2007, 21:00
OS, Lazarus, FPC: Linux (L 0.9.29 FPC 2.4.2)
CPU-Target: x86_64

Re: Listbox abspeichern?[weitere Frage!!!]

Beitrag von Targion »

Code: Alles auswählen

var liste: TStringList;
 i: Integer;
 maxcount: Integer;
begin
liste := TStringList.Create;
 
if listbox1.items.count > listbox2.items.count then
 maxcount := listbox1.items.count
else
 maxcount := listbox2.items.count;
 
for i := 0 to maxcount - 1 do// hier steht nicht 50, sondern die zeilenlänge der "längeren" listbox!
begin
if i < listbox1.items.count then
liste.Add(listbox1.items[i]);
if i < listbox2.items.count then
liste.Add(listbox2.items[i]);
end;
liste.SaveToFile(FileNameEdit1.filename);
liste.Free;

Antworten