![]() |
SaveDialog
Hallo habe ein Problem mit dem Speichern einer Listbox in eine Textdatei,
mit diesem Code speicher ich eine Listbox in einer Datei. Funktioniert ohne Probleme.
Delphi-Quellcode:
Nur dann sind in dieser Datei am Ende 2 leere Zeilen, obwohl in der Listbox definitiv keine leere Zeile ist.
SaveDialog1.Filename := SaveDialog1.Filename + '.txt';
AssignFile(F, SaveDialog1.Filename); Rewrite(F); WriteLn(F, Listbox.items.text); CloseFile(F); Mir fällt nicht mehr ein, als die fehlerhafte Datei beim benutzen einzulesen und dann jedes mal temporär die letzten 2 Zeilen zu löschen. Die Datei ist jedoch für den Benutzer frei zugängig und wenn er dann meint die letzten beiden Leerzeilen löschen müssen ist das weniger gut. Im schlimmsten Fall kann ich mit der Lösung leben, wenn halt die letzten 2 Zeilen fehler dann bekommt der Benutzer das nicht mit einer Fehlermeldung mit, sondern nur mit einer nicht abgeschlossenen Funktion (letzten 2 Schritte fehlen). Direkt beim Speichern, wieder einlesen, löschen und wieder speichern funktioniert nicht (bereits getestet). Viele Grüße |
Re: SaveDialog
Speicher doch einfach mit
Delphi-Quellcode:
Aber du wirst da trotzdem eine Leerzeile am Ende haben
ListBox.Items.SaveToFile( SaveDialog1.FileName );
weil die ist da einfach mit drin (jede Zeile in der Listbox wird mit #13#10 abgeschlossen) Und bei deiner Vorgehensweise hängt WriteLn nochmals #13#10 daran -> ergibt 2 Leerzeilen |
Re: SaveDialog
Wie liest du denn die Datei erneut ein? Das darf halt einfach keinen Fehler verursachen? LoadFromFile wäre hier ein Stichwort, in so fern du die Daten wieder ein einer TListBox haben willst. Und wenn dann immer noch eine Leerzeile haben solltest, dann geh über die ListBox drüber und entferne alle leeren Zeilen.
|
Re: SaveDialog
ja, werd es jetzt wohl so machen, dass ich jedes mal beim einlesen drüber gehe und die leeren Zeilen lösche.
Ist zwar wieder einmal ein kleiner Beitrag zur Performanceeinbuße aber gut ^^ |
Re: SaveDialog
Delphi-Quellcode:
Jap damit wirds aufjedenfall auch nix auf Dauer.
ListBox.Items.SaveToFile( SaveDialog1.FileName );
|
Re: SaveDialog
Zitat:
Zitat:
|
Re: SaveDialog
hab mich verlesen und schon längst editiert ;-)
war wohl noch nicht abgespeichert als du es gelesen hast :P |
Re: SaveDialog
Was spricht gegen folgendes?
Delphi-Quellcode:
SaveDialog.Filename := ChangeFileExt(SaveDialog.Filename, '.txt');
AssignFile(F, SaveDialog.Filename); try Rewrite(F); Write(F, Listbox.items.text); finally CloseFile(F); end; |
Re: SaveDialog
dass immer noch 1 Zeile am Ende steht, ob jetzt 1 oder 2 macht dann den Kohl auch nicht mehr fett.
Das ist ja oben beschrieben, dass auch das reine SavetoText auch eine hintenran hängt. |
Re: SaveDialog
Zitat:
Am Ende ist und bleibt eine Leerzeile ;) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:37 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz