AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

SaveDialog

Ein Thema von ecHo89 · begonnen am 12. Jan 2010 · letzter Beitrag vom 12. Jan 2010
Antwort Antwort
Seite 1 von 2  1 2      
ecHo89

Registriert seit: 13. Apr 2008
97 Beiträge
 
#1

SaveDialog

  Alt 12. Jan 2010, 00:45
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:
SaveDialog1.Filename := SaveDialog1.Filename + '.txt';
AssignFile(F, SaveDialog1.Filename);
Rewrite(F);
WriteLn(F, Listbox.items.text);
CloseFile(F);
Nur dann sind in dieser Datei am Ende 2 leere Zeilen, obwohl in der Listbox definitiv keine leere Zeile ist.
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
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

Re: SaveDialog

  Alt 12. Jan 2010, 00:49
Speicher doch einfach mit
ListBox.Items.SaveToFile( SaveDialog1.FileName ); Aber du wirst da trotzdem eine Leerzeile am Ende haben
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
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#3

Re: SaveDialog

  Alt 12. Jan 2010, 00:52
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.
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
ecHo89

Registriert seit: 13. Apr 2008
97 Beiträge
 
#4

Re: SaveDialog

  Alt 12. Jan 2010, 01:13
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 ^^
  Mit Zitat antworten Zitat
ecHo89

Registriert seit: 13. Apr 2008
97 Beiträge
 
#5

Re: SaveDialog

  Alt 12. Jan 2010, 01:19
ListBox.Items.SaveToFile( SaveDialog1.FileName ); Jap damit wirds aufjedenfall auch nix auf Dauer.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

Re: SaveDialog

  Alt 12. Jan 2010, 01:20
Zitat von ecHo89:
P.S.

ListBox.Items.SaveToFile( SaveDialog1.FileName ); Selbst damit gibts ne Leerzeile bei mir, bei dir nicht?!
Zitat von Sir Rufo:
Speicher doch einfach mit
ListBox.Items.SaveToFile( SaveDialog1.FileName ); Aber du wirst da trotzdem eine Leerzeile am Ende haben
Lesen?
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
ecHo89

Registriert seit: 13. Apr 2008
97 Beiträge
 
#7

Re: SaveDialog

  Alt 12. Jan 2010, 01:21
hab mich verlesen und schon längst editiert
war wohl noch nicht abgespeichert als du es gelesen hast
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: SaveDialog

  Alt 12. Jan 2010, 01:28
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;
  Mit Zitat antworten Zitat
ecHo89

Registriert seit: 13. Apr 2008
97 Beiträge
 
#9

Re: SaveDialog

  Alt 12. Jan 2010, 01:32
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.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#10

Re: SaveDialog

  Alt 12. Jan 2010, 01:32
Zitat von omata:
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;
Ergibt das gleiche Ergebnis wie SaveToFile

Am Ende ist und bleibt eine Leerzeile
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:23 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