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?