Autor |
Beitrag |
ChrisCross
Beiträge: 124
Erhaltene Danke: 12
Windows 10 64 bit
Delphi XE6 Starter
|
Verfasst: Mi 07.11.12 21:19
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
Beiträge: 1248
Erhaltene Danke: 187
XP - Server 2008R2
D2 - Delphi XE
|
Verfasst: Mi 07.11.12 21:38
Ich sehe den Zusammenhang zu Deinem Code nicht aber:
Delphi-Quelltext 1:
| Memo.Lines.SaveToFile(...); |
_________________ Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS
|
|
WasWeißDennIch
Beiträge: 653
Erhaltene Danke: 160
|
Verfasst: 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
Beiträge: 124
Erhaltene Danke: 12
Windows 10 64 bit
Delphi XE6 Starter
|
Verfasst: Mi 07.11.12 21:46
Delphi gibt dann die Fehlermeldung aus, da die Datei von einem anderen Prozess verwendet wird.
|
|
bummi
Beiträge: 1248
Erhaltene Danke: 187
XP - Server 2008R2
D2 - Delphi XE
|
Verfasst: Mi 07.11.12 22:21
versucht Du auf die gleiche Datei per Append und xx.SaveToFile zuzugreifen vor CloseFile(Datei); ausgeführt wurde?
_________________ Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS
|
|
ChrisCross
Beiträge: 124
Erhaltene Danke: 12
Windows 10 64 bit
Delphi XE6 Starter
|
Verfasst: 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
Beiträge: 1248
Erhaltene Danke: 187
XP - Server 2008R2
D2 - Delphi XE
|
Verfasst: 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; |
_________________ Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS
|
|
ChrisCross
Beiträge: 124
Erhaltene Danke: 12
Windows 10 64 bit
Delphi XE6 Starter
|
Verfasst: 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
Beiträge: 653
Erhaltene Danke: 160
|
Verfasst: 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.
Für diesen Beitrag haben gedankt: ChrisCross
|
|
ChrisCross
Beiträge: 124
Erhaltene Danke: 12
Windows 10 64 bit
Delphi XE6 Starter
|
Verfasst: Do 08.11.12 09:40
Ich mache es mal so Danke.
|
|
Xion
Beiträge: 1952
Erhaltene Danke: 128
Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
|
Verfasst: 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.
_________________ a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
|
|
WasWeißDennIch
Beiträge: 653
Erhaltene Danke: 160
|
Verfasst: 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.
|
|
Xion
Beiträge: 1952
Erhaltene Danke: 128
Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
|
Verfasst: Do 08.11.12 10:30
Ich hab das mit dem IOResult einfach mal so von bummi übernommen Ich muss zugeben dass ich im Moment garnicht weiß wo das her kommt. Es ging mehr um die Schleife
//PS:
Info zu IOResult: www.delphibasics.co....&ExpandCode1=Yes
_________________ a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
|
|