Entwickler-Ecke
Dateizugriff - Memo speichern
ChrisCross - Mi 07.11.12 21:19
Titel: Memo speichern
Hallo,
unten sieht ihr meinem Quellcode. Wie speichere ich das Memo ab? Habe schon verschiedene Varianten probiert, aber keine hat funktioniert.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| var Datei: TextFile; begin Datum:=datetostr(DateTimePicker1.Date); if FileExists(Datum+'.txt') then begin AssignFile(Datei,Datum +'.txt'); Append(Datei); if IOResult = 0 then begin writeln(Datei,'TERMINWUNSCH'); writeln(Datei,''); CloseFile(Datei); end; |
bummi - Mi 07.11.12 21:38
Ich sehe den Zusammenhang zu Deinem Code nicht aber:
Delphi-Quelltext
1:
| Memo.Lines.SaveToFile(...); |
WasWeißDennIch - Mi 07.11.12 21:46
Oder wenn die beiden ersten Zeilen enthalten sein müssen, ohne das im Memo anzuzeigen (ungetestet):
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| var sl: TStringlist; begin sl := TStringlist.Create; try sl.Add('TERMINWUNSCH'); sl.Add(''); sl.AddStrings(Memo1.Lines); sl.SaveToFile(ChangeFileExt(Datum, '.txt')); finally sl.Free; end; end; |
ChrisCross - Mi 07.11.12 21:46
Delphi gibt dann die Fehlermeldung aus, da die Datei von einem anderen Prozess verwendet wird.
bummi - Mi 07.11.12 22:21
versucht Du auf die gleiche Datei per Append und xx.SaveToFile zuzugreifen vor CloseFile(Datei); ausgeführt wurde?
ChrisCross - Mi 07.11.12 22:31
@WasWeisIchDenn
Ich probiere es mal so
Habe deine Antwort zu spät gesehen
@bummi:ja, sollte ich es erst danach machen?
bummi - Do 08.11.12 01:05
Ich verstehe nicht was Du mit der Kombination willst ... saveToFile macht ganau das was der Name vermuten lässt, es speichert es in eine Datei, hängt es nicht an .... Du aknnst ja mal mit dem Debugger folgenden Code absteppen
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| procedure TForm3.Button1Click(Sender: TObject); const fn = 'C:\temp\temp.txt'; var Datei: TextFile; begin if FileExists(fn) then begin AssignFile(Datei, fn); Append(Datei); if IOResult = 0 then begin writeln(Datei, 'TERMINWUNSCH'); writeln(Datei, ''); Memo1.lines.saveToFile(fn); CloseFile(Datei); end; end; end; |
ChrisCross - Do 08.11.12 08:14
@WasWeißDennIch
Wie währe der Befehl, wenn man den abgespeicherten Text immer hinten dran anhängen würde also und nicht die Datei überschreiben wird:
Terminwunsch
sddds
Terminwunsch
fdjdfj
...
WasWeißDennIch - Do 08.11.12 09:00
Einfach vorher laden:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| var sl: TStringlist; Filename: string; begin sl := TStringlist.Create; try Filename := ChangeFileExt(Datum, '.txt'); if FileExists(Filename) then sl.LoadFromFile(Filename); sl.Add('TERMINWUNSCH'); sl.Add(''); sl.AddStrings(Memo1.Lines); sl.SaveToFile(Filename); finally sl.Free; end; end; |
Falls gewünscht, kannst Du noch an geeigneter Stelle eine Leerzeile einfügen. Allerdings wird das ggf. recht lahm, wenn die Datei eine gewisse Größe erreicht, da wäre evtl. ein Umsteigen auf Streams performanter.
ChrisCross - Do 08.11.12 09:40
Ich mache es mal so :D Danke.
Xion - Do 08.11.12 10:23
warum nicht so:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
| const fn = 'C:\temp\temp.txt'; var Datei: TextFile; L: integer; begin if FileExists(fn) then begin AssignFile(Datei, fn); Append(Datei); if IOResult = 0 then begin writeln(Datei, 'TERMINWUNSCH'); writeln(Datei, ''); for L:= 0 to Memo1.Lines.Count-1 do writeLn(Datei, Memo1.Lines[L]); CloseFile(Datei); end; end; end; |
Auf diese Weise speicherst du die Zeilen des Memos von Hand in die Datei, und kannst deshalb einfach deinen Text an die Datei anhängen.
WasWeißDennIch - Do 08.11.12 10:26
Das ginge auch, aber dann bräuchte man einen Else-Zweig und müsste für IOResult mit der Compiler-Direktrive $I hantieren.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 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!