Werden neue log Einträge via insert immer am Anfang der Datei eingefügt sind die ältesten Einträge am Ender der Datei.
Wie machst Du den einen Insert auf eine Datei?
Auf die schnelle ungetestet:
100.000 Bytes Truncate
Delphi-Quellcode:
procedure Truncate100;
var
FS : TFileStream;
Buffer : TDynByteArray;
I : Integer;
begin
FS := TFileStream.Create('log.txt',fmOpenread);
try
if FS.Size > 100000 then
begin
FS.Seek(100000,soEnd);
Setlength(Buffer,100000);
FS.ReadBuffer(Buffer[0],100000);
FS.Free;
i := 0;
While i < 99999 do
begin
if (Buffer[i] = 13) and Buffer[i+1] = 10 then
begin
inc(I,2);
break;
end;
inc(i);
end;
FS := TFileStream.Create('log.txt',fmOpenWrite);
try
FS.WriteBuffer(Buffer[i],100000-i);
finally
FS.Free;
end;
end;
finally
FS.Free;
end;
end;