Autor Beitrag
ChrisCross
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 124
Erhaltene Danke: 12

Windows 10 64 bit
Delphi XE6 Starter
BeitragVerfasst: 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.

ausblenden 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,'');
   {Memo1.Lines.Text;} //Wie speichere ich das Memo?
   CloseFile(Datei);
  end;
bummi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1248
Erhaltene Danke: 187

XP - Server 2008R2
D2 - Delphi XE
BeitragVerfasst: Mi 07.11.12 21:38 
Ich sehe den Zusammenhang zu Deinem Code nicht aber:
ausblenden Delphi-Quelltext
1:
Memo.Lines.SaveToFile(...);					

_________________
Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS
WasWeißDennIch
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 653
Erhaltene Danke: 160



BeitragVerfasst: Mi 07.11.12 21:46 
Oder wenn die beiden ersten Zeilen enthalten sein müssen, ohne das im Memo anzuzeigen (ungetestet):
ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 124
Erhaltene Danke: 12

Windows 10 64 bit
Delphi XE6 Starter
BeitragVerfasst: Mi 07.11.12 21:46 
Delphi gibt dann die Fehlermeldung aus, da die Datei von einem anderen Prozess verwendet wird.
bummi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1248
Erhaltene Danke: 187

XP - Server 2008R2
D2 - Delphi XE
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 124
Erhaltene Danke: 12

Windows 10 64 bit
Delphi XE6 Starter
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1248
Erhaltene Danke: 187

XP - Server 2008R2
D2 - Delphi XE
BeitragVerfasst: 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
ausblenden 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); // << hier gibt es die Exception
      CloseFile(Datei);
    end;
  end;
end;

_________________
Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS
ChrisCross Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 124
Erhaltene Danke: 12

Windows 10 64 bit
Delphi XE6 Starter
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 653
Erhaltene Danke: 160



BeitragVerfasst: Do 08.11.12 09:00 
Einfach vorher laden:
ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 124
Erhaltene Danke: 12

Windows 10 64 bit
Delphi XE6 Starter
BeitragVerfasst: Do 08.11.12 09:40 
Ich mache es mal so :D Danke.
Xion
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
EE-Maler
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)
BeitragVerfasst: Do 08.11.12 10:23 
warum nicht so:
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 653
Erhaltene Danke: 160



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
EE-Maler
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)
BeitragVerfasst: Do 08.11.12 10:30 
Ich hab das mit dem IOResult einfach mal so von user profile iconbummi ü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)