Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Abbruch eines Save Dialog
avenger - Fr 13.03.09 03:28
Titel: Abbruch eines Save Dialog
Wenn ich das Richtig verstehe gibt der SaveDialog.execute beim klick auf Speichern True zurueck und beim klick auf abbrechen ein false. Wie kann ich mit dem If/Try Befehl abfangen das wenn ein False zurück kommt sprich abbrechen gedrückt wird mein Programm abstürzt ?
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24:
| procedure TForm3.Speichern();
var StringList: TStringList;
begin if savedialog1.Execute then StringList := TStringList.Create; try StringList.Add(Memo1.Text+Edit1.Text);
if savedialog1.filterindex = 1 then StringList.SaveToFile(SaveDialog1.FileName+'.txt') else if savedialog1.filterindex = 2 then StringList.SaveToFile(SaveDialog1.FileName+'.ini') else finally StringList.Free; end; end; |
Moderiert von
Gausi: Delphi-Tags hinzugefügtModeriert von
Narses: Topic aus VCL (Visual Component Library) verschoben am Fr 13.03.2009 um 15:08
Andreas Schilling - Fr 13.03.09 08:06
Du hast das Create der Stringlist nur gemacht wenn mit "Speichern" der Dialog verlassen wure. Der Rest wurd immer gemacht, also war die Stringliste nicht da und Stringliste.add führt zu einer Zugriffsverletzung.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
| procedure TForm3.Speichern(); var StringList: TStringList; begin if savedialog1.Execute then begin StringList := TStringList.Create; try StringList.Add(Memo1.Text+Edit1.Text);
if savedialog1.filterindex = 1 then StringList.SaveToFile(SaveDialog1.FileName+'.txt') else if savedialog1.filterindex = 2 then StringList.SaveToFile(SaveDialog1.FileName+'.ini');
finally StringList.Free; end; end; end; |
Marc. - Fr 13.03.09 12:06
Morgen,
Vorschlag: ein Case-Of würde hier IMHO die Übersicht um einiges steigern. ;)
Zudem verhindert korrektes Einrücken in solchen Fällen Fehler. Schau dir dazu mal das Tool
DelForExp [
http://www.aew.wur.nl/UK/Delforexp/] an.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| procedure TForm3.Speichern(); begin if Savedialog1.Execute then begin with TStringList.Create do try Add(Memo1.Text + Edit1.Text);
case SaveDialog1.Filterindex of 1: SaveToFile(SaveDialog1.FileName+'.txt'); 2: SaveToFile(SaveDialog1.FileName+'.ini'); 3: ... end; finally Free; end; end, end; |
Grüße,
Marc
avenger - Fr 13.03.09 15:00
Danke für die Infos
Problem gelöst und verstanden :D
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!