Entwickler-Ecke
Dateizugriff - Ausgewählte Datei im SaveDialog anlegen und Text abspeichern
Bomania - Mo 10.02.03 21:02
Titel: Ausgewählte Datei im SaveDialog anlegen und Text abspeichern
Hallo,
ich möchte mittels dem SaveDialog eine neue Datei anlegen lassen und zugleich auch Text darin abspeichern. Bis jetzt sieht das bei mir so aus:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| ... with SaveDialog1 do begin Filter:='HTML-Datei|*.html'; InitialDir:=ExtractFilePath(ParamStr(0)); if Execute then begin Dateiname:=FileName; end; // if end; // with end; |
Wie zu erkennen ist, fehlt mir der Teil zum anlegen der Datei/abspeichern von Text in der Datei. Kann mir da jemand helfen?
Danke
smiegel - Mo 10.02.03 21:22
Hallo,
im Forum dürften dazu genügend Einträge existieren. Suche einmal danach.
Tipp: TFileStream, AssignFile in der Delphi-Hilfe nachschauen.
Anonymous - Mo 10.02.03 22:19
Wenn ich mal wieder vergessen habe wie das geht, dann gebe ich EOF in Delphi ein und drücke die F1 Taste. Es erscheint die Hilfe zu der Eof-Funktion. Dann klicke ich oben auf Beispiel. Da hast du ein wunderbares Beispiel wie man Texte abspeichert. Das EOF ist auf jeden Fall eine Eselsbrücke.
Ansonsten bin ich faul und schreibe meine Texte in ein TSringList. Dann gebe ich StringList.SaveToFile('c:\blabla.txt') und schon ist mein Text gespeichert.
Bomania - Di 11.02.03 18:55
Ich speichere den Text nun mit folgender Funktion ab:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| procedure SaveStrToStream(const Stream: TStream; const Value: String); //Schreibt einen dynamischen String in einen Stream var Len: Word; begin Len := Length(Value); Stream.WriteBuffer(Len, SizeOf(Len)); if Len > 0 then Stream.WriteBuffer(Pointer(Value)^, Len); end; |
Leider entsteht ein sehr unschöner Effekt: Wenn ich den Text aus einem TRichEdit abspeichere, dann befinden sich immer an erster Stelle ein oder zwei merkwürdige Zeichen. Muss man bei einem RichEdit etwas bestimmtes beachten?
Delete - Mi 12.02.03 04:16
Hm, also wenn du schon mit einem RichEdit arbeitest. Warum denn dann so kompliziert?
Quelltext
1: 2:
| If SaveDialog1.Execute then RichEdit1.Lines.SaveToFile(SaveDialog1.Filename); |
Bomania - Mi 12.02.03 07:27
Danke für den Tipp. Ich hab das Problem nämlich etwas umständlich gelöst (aber es funktioniert):
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: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35:
| procedure SaveStrToStream(const Stream: TStream; const Value: String); //Schreibt einen dynamischen String in einen Stream var Len: Word; begin Len := Length(Value); Stream.WriteBuffer(Len, SizeOf(Len)); if Len > 0 then Stream.WriteBuffer(Pointer(Value)^, Len); end;
...
var Dateiname:String; var f:TextFile; var FS:TFileStream; X:string; begin with SaveDialog1 do begin Filter:='HTML-Dateien|*.html'; InitialDir:=ExtractFilePath(ParamStr(0)); if Execute then begin Dateiname:=FileName; FS:=TFileStream.Create(Dateiname,fmCreate); FS.Destroy; rtb_Ausgabe.SelectAll; X:=rtb_Ausgabe.SelText; AssignFile(f,Dateiname); ReWrite(f); Writeln(f,X); CloseFile(f); end; // if end; // with end; |
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!