Einzelnen Beitrag anzeigen

Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.142 Beiträge
 
Delphi 10.3 Rio
 
#20

AW: Textdatei bei 100 MB Truncaten

  Alt 18. Jul 2015, 18:51
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;

Geändert von Mavarik (18. Jul 2015 um 19:04 Uhr)
  Mit Zitat antworten Zitat