Einzelnen Beitrag anzeigen

dGeek
(Gast)

n/a Beiträge
 
#1

TFileStream speichert nur Unsinn

  Alt 19. Jul 2016, 18:29
Delphi-Version: XE2
Ich habe folgende Funktion, welche eigentlich einen simplen String mit einer Uhrzeit an eine Textdatei anhängen soll.

Delphi-Quellcode:
var
 aFileStream: TFileStream;
 aLogStr: String;
 aFileName: String;
begin
 aLogStr := DateTimeToStr(Now) + aSystemLogStr + sLineBreak;
 aFileName := vLogFile;

 if FileExists(aFileName) then
  aFileStream := TFileStream.Create(aFileName, fmOpenReadWrite)
 else
  aFileStream := TFileStream.Create(aFileName, fmCreate);

 try
  aFileStream.Seek(0, soEnd);
  aFileStream.WriteBuffer(Pointer(aLogStr)^, Length(aLogStr));
 finally
  aFileStream.Free;
 end;
end;
Das problem ist nun, dass der übergebene String erstens nicht komplett abgespeichert wird ud zweitens in der Datei überall NUL steht.

Bei folgender Variante verschwinden die NUL's, aber der übergebene String wird gar nicht gespeichert:
Delphi-Quellcode:
var
 aFileStream: TFileStream;
 aLogStr: String;
 aFileName: String;
begin
 // aStr z.B. == 'Programm gestartet".

 aLogStr := DateTimeToStr(Now) + ' | ' + aStr + sLineBreak;
 aFileName := vLogFile;

 if FileExists(aFileName) then
  aFileStream := TFileStream.Create(aFileName, fmOpenReadWrite)
 else
  aFileStream := TFileStream.Create(aFileName, fmCreate);

 try
  aFileStream.Seek(0, soEnd);
  aFileStream.WriteBuffer(Pointer(aLogStr)^, Length(aLogStr));
 finally
  aFileStream.Free;
 end;
end;
Was stimmt da nicht?
  Mit Zitat antworten Zitat