![]() |
Datenspeicherung in *-csv Datei
Hallo,
der folgende Code funktioniert. Ich möchte nur, dass Ihn mal jemand kurz gegenliest! In ein Formular sollen - in diesem Demo-Beispiel - aus Textfeldern und Comboboxen Werte in die Datei datensatz.csv gespeichert werden. Ist das so OK - und vor allem SICHER? Gibt´s Verbesserungsvorschläge? Viele Grüsse, moperswings
Delphi-Quellcode:
// Setzt die Eingaben alle zurück
procedure TForm1.resetClick(Sender: TObject); begin edit1.Text := ''; combobox1.ItemIndex := -1; end; // speichert die Werte in eine Textdatei procedure TForm1.speichernClick(Sender: TObject); var f: Textfile; wert1: string; wert2: string; filename: string; begin try filename := 'datensatz.csv'; AssignFile(f, filename); {$i-} append(f); {$i+} if IOResult <> 0 then begin ShowMessage('Fehler'); Exit; end; wert1 := Edit1.Text; wert2 := ComboBox1.Text; Writeln(f, Edit1.Text + ';' + ComboBox1.Text + ';' ); Closefile(f); except showmessage('Ein Fehler ist aufgetreten'); end; end; |
Re: Datenspeicherung in *-csv Datei
Aus meiner Sicht, kannst Du auf den try except Block verzichten,
weil Du ja scho alle möglichen Dateizugriffsfehler mit {$I-} und {$I+} abfängst. Grüße Klaus
Delphi-Quellcode:
procedure TForm1.speichernClick(Sender: TObject);
var f: Textfile; wert1: string; wert2: string; filename: string; begin filename := 'datensatz.csv'; AssignFile(f, filename); {$i-} if FileExists(fileName) then append(f) else rewrite(f); {$i+} if IOResult = 0 then begin Writeln(f, Edit1.Text + ';' + ComboBox1.Text + ';' ); Closefile(f); end else showmessage('Ein Fehler ist aufgetreten'); end; |
Re: Datenspeicherung in *-csv Datei
Danke für die Tipps, moperswings
|
Re: Datenspeicherung in *-csv Datei
Delphi-Quellcode:
WriteLn fühlt sich ohne Fehlerbehandlung (innerhalb {$i-} und {$i+}) auch ganz wohl ... vorallem bei Schreibfehlern (z.B. voller Datenträger)
procedure TForm1.speichernClick(Sender: TObject);
var f: Textfile; wert1: string; wert2: string; filename: string; begin filename := 'datensatz.csv'; AssignFile(f, filename); IOResult; // IOResult zurücksetzen // oder, wenn Funktuionen nicht ohne Ergegniszuweisung aufgerufen werden dürfen // if IOResult = 0 then ; {$i-} if FileExists(fileName) then append(f) else rewrite(f); Writeln(f, Edit1.Text + ';' + ComboBox1.Text + ';' ); Closefile(f); {$i+} if IOResult <> 0 then showmessage('Ein Fehler ist aufgetreten'); end; PS: zu beachten ist, daß die Fehlernummer von IOResult immer nur dann zurückgesetzt wird, wenn dieses aufgerufen wurde. Also alle I/O-Fehler (natürlich nur die Fehlernummer des Letzten) vor dessen Aufruf werden beachtet. |
Re: Datenspeicherung in *-csv Datei
Nachtrag:
Delphi-Quellcode:
Var
lError: Integer; ... Begin ... lError := IOResult; If ( lError <> 0 ) Then ShowMessage('Es ist folgender Fehler aufgetreten: ' + SysErrorMessage(lError)); End; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:23 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-2025 by Thomas Breitkreuz