Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - SaveDialog-Problem
Tony-S - Do 05.02.09 15:33
Titel: SaveDialog-Problem
Hallo Community, ich bin gerade dabei eine Art Wordpad zu programmieren.
Funktioniert auch alles wunderbar, das Speichern macht mir aber noch Probleme.
procedure TForm1.Speichern1Click(Sender: TObject);
begin
savedialog1.Options := [ofOverwritePrompt]; // <-- Das hier hätte ich gedacht verhindert, das eine Datei doppelt da ist.
savedialog1.Filter:='rtf files (*.rtf)|*.rtf';
if savedialog1.Execute=true then
//RichEdit1.Lines.SaveToFile(SaveDialog1.Filename); // so hätte ich gedacht ist es richtig, da das nicht ganz funktioniert hab ich es erstmal so gelöst
-->
RichEdit1.Lines.SaveToFile('Notiz.rtf');
end;
Könnt ihr mich auf meinen Denkfehler hinweisen ^^? viel kann ja nicht falsch sein.
hazard999 - Do 05.02.09 15:35
Du meinst überschreiben?
wie wärs mit FileExists?
Tony-S - Do 05.02.09 15:39
ofFileMustExist heißt es übrigens ^^, naja es soll mich halt Fragen ob ich die Datei die auch so heißt löschen will, wie es auch üblich ist.
Wollte halt den Namen selber vergeben, so das die Datei nicht immer Notiz heißt, und da hakt es noch :(
AnyKey - Do 05.02.09 15:47
Hi,
du musst erst prüfen ob die Datei schon existiert, so wie hazard999 schon sagte. Das machst du über die Funktion FileExists in etwa so:
if FileExists('Notiz.rtf') then
begin
... hier kommt dann das hin was er machen soll wenn es die Datei schon gibt.
end;
vor dein Notiz.rtf musst du allerdings noch den Pfad schreiben in dem er suchen soll.
Gruß
AnyKey
Tony-S - Do 05.02.09 23:57
Danke schonmal, und wie schreib ich den Dialog um, damit ich eigene Namen vergeben kann? also nicht Notiz.rtf sondern ??
jaenicke - Fr 06.02.09 00:09
Titel: Re: SaveDialog-Problem
Tony-S hat folgendes geschrieben : |
if savedialog1.Execute=true then
//RichEdit1.Lines.SaveToFile(SaveDialog1.Filename); // so hätte ich gedacht ist es richtig, da das nicht ganz funktioniert |
Erstens ist die erste Zeile falsch, das muss so heißen:
Delphi-Quelltext
1:
| if SaveDialog1.Execute then |
und zweitens sollte das so eigentlich schon funktionieren.
Was funktioniert denn "nicht ganz"?
Tony-S - Fr 06.02.09 01:19
Nein falsch ist das nicht, eher egal würde ich meinen, wenn ich die Zeile so schreibe,
und meine Datei auf den Desktop speichere, ist das ganz einfach keine Datei, ich müsste erst "öffnen mit" jeses mal machen um es zu öffnen.
jaenicke - Fr 06.02.09 01:33
Tony-S hat folgendes geschrieben : |
| Nein falsch ist das nicht, eher egal würde ich meinen, wenn ich die Zeile so schreibe, |
Nein, es ist nicht egal, denn es funktioniert ganz einfach nicht immer...
http://www.delphi-treff.de/tutorials/objectpascal/programmierung-mit-boolean-werten/page/4/
Mal abgesehen davon, dass es unlogisch ist, oder sagst du: "Wenn 'draußen regnet es' wahr ist, dann nehme ich den Regenschirm mit."? Nein, du sagst: "Wenn es draußen regnet, dann nehme ich den Regenschirm mit."
Also was gibt es für einen Grund das in Delphi plötzlich anders zu machen? (Von der möglichen Fehlerquelle einmal ganz abgesehen.)
Tony-S hat folgendes geschrieben : |
| und meine Datei auf den Desktop speichere, ist das ganz einfach keine Datei, ich müsste erst "öffnen mit" jeses mal machen um es zu öffnen. |
Dann fehlt die Dateierweiterung...
Wenn eine automatisch ergänzt werden soll, wenn im Dialog keine angegeben wird, dann musst du dafür DefaultExt beim SaveDialog entsprechend setzen.
Du solltest zumindest auf deinem Entwicklungs-PC die Dateierweiterungen auch einblenden. Das geht im Windows Explorer unter "Extras --> Ordneroptionen... --> Ansicht --> Erweiterungen bei bekannten Dateitypen ausblenden", das musst du nur deaktivieren.
Denn nur dann siehst du die Erweiterungen wie .rtf usw. auch bzw. siehst, wenn sie fehlen. ;-)
Tony-S - Fr 06.02.09 23:36
Dann fehlt die Dateierweiterung...
Wenn eine automatisch ergänzt werden soll, wenn im Dialog keine angegeben wird, dann musst du dafür DefaultExt beim SaveDialog entsprechend setzen.
Inwiefern macht man das denn (mit dem Defaultex), ich hätte jetzt angenommen, das dass mit in die Savedialog.options mit reinkommt, ist aber wohl nicht so ^^
Marc. - Fr 06.02.09 23:48
DefaultExt ist eine Property der Klasse TSave/TOpenDialog. Also:
Delphi-Quelltext
1:
| SaveDialog1.DefaultExt := ... |
Lässt sich auch direkt im OI setzen. Weitere Infos und ein Beispiel findest Du in Deiner DOH. ;)
Tony-S - Fr 06.02.09 23:59
Danke war ja doch relativ "leicht", nur Wissen muss man das erstmal - was ich ja jetzt tue ;-)
Damit auch mal seht wobei ihr mir geholfen habt, lad ich es mal mit hoch.
Ein paar Fehler hat es noch aber ^^ da bin ich drann das schaff ich :D .
jaenicke - Sa 07.02.09 00:07
Die Frage am Ende sollte eher sein, ob gespeichert werden soll. Und wenn ich dann ja wähle und ich im Speichern-Dialog (z.B. ais Versehen) auf Abbrechen drücke, dann sollte nicht geschlossen werden. ;-)
Tony-S - Sa 07.02.09 00:16
Da ist natürlich was drann :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!