AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Textdatei bei 100 MB Truncaten

Ein Thema von af99 · begonnen am 16. Jul 2015 · letzter Beitrag vom 18. Jul 2015
Antwort Antwort
af99

Registriert seit: 22. Apr 2004
84 Beiträge
 
Delphi XE5 Ultimate
 
#1

Textdatei bei 100 MB Truncaten

  Alt 16. Jul 2015, 10:18
Delphi-Version: XE5
Hallo Zusammen,

ich möchte eine Textdatei auf 100MB kürzen.
Folgendes habe ich gemacht
Delphi-Quellcode:
var
  FileStream : TFileStream;

begin
  FileStream := TFileStream.Create(ExtractFilePath(Application.ExeName) + 'log.txt', fmopenreadwrite);
  try
    if FileStream.Size > 1000000 then
    begin
      FileStream.Size := 1000000;
      FileStream.Position := FileStream.Size;
    end;
  finally
    FileStream.Free;
  end;
end;
Jetzt ist es in der Regel so das die letzet Zeile irgendwo abgeschnitten wird. Ich möchte aber das in der Datei nur vollständige Zeilen enthalten sind. Wie kann ich also die letzte unvollständige Zeile löschen?

Viele Grüße
Andreas
  Mit Zitat antworten Zitat
Klaus01
Online

Registriert seit: 30. Nov 2005
Ort: München
5.778 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Textdatei bei 100 MB Truncaten

  Alt 16. Jul 2015, 10:27
Hallo,

Du könntest beim Beschreiben der LogDatei prüfen ob die maximale Dateigröße erreicht ist.
Ist sie erreicht wird die Datei abgeschnitten - bevor ein neuer Eintrag eingetragen wird.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#3

AW: Textdatei bei 100 MB Truncaten

  Alt 16. Jul 2015, 10:43
Bevor du die Größe änderst, lade einen Block vor der Stelle wo du kürzen willst. Dann suche rückwärts bis zum ersten Zeilenumbruch. Wenn du da keinen findest, musst du eben noch einen Block vorher laden.

Dann hast du die Stelle und kannst die Größe entsprechend ändern.
  Mit Zitat antworten Zitat
af99

Registriert seit: 22. Apr 2004
84 Beiträge
 
Delphi XE5 Ultimate
 
#4

AW: Textdatei bei 100 MB Truncaten

  Alt 16. Jul 2015, 12:53
@Klaus01: geht nicht da ich immer die alten Einträge abschneiden möchte.
@BUG: wie finde ich denn die Stelle bei genau 100MB?
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#5

AW: Textdatei bei 100 MB Truncaten

  Alt 16. Jul 2015, 13:04
@BUG: wie finde ich denn die Stelle bei genau 100MB?
So: FileStream.Position := 1000000; . Du möchtest allerdings ein Stück nach vorne, um von da aus bis 1MB zu lesen.
  Mit Zitat antworten Zitat
af99

Registriert seit: 22. Apr 2004
84 Beiträge
 
Delphi XE5 Ultimate
 
#6

AW: Textdatei bei 100 MB Truncaten

  Alt 16. Jul 2015, 15:49
ok, soweit bin ich nun
Delphi-Quellcode:
const
  MaxLen = 1024;
var
  FileStream : TFileStream;
  Writer: TStreamWriter;
  Reader: TStreamReader;
  buffer: string;
  posCRLF: Integer;

begin
  try
    FileStream := TFileStream.Create(ExtractFilePath(Application.ExeName) + 'log.txt', fmopenRead);//fmOpenRead or fmShareDenyWrite);
    Writer := TStreamWriter.Create(FileStream);
    Reader := TStreamReader.Create(FileStream);

    filestream.Position := 999900;

    buffer := Reader.ReadToEnd;

    posCRLF := pos('#13#10' , buffer);

    ShowMessage('pos: ' + inttostr(posCRLF));

    ShowMessage('buffer: ' + buffer);

    if FileStream.Size > 1000000 then
    begin
      FileStream.Size := 1000000;
    end;
  finally
    Writer.Free;
    Reader.Free;
    FileStream.Free;
  end;
end;
Mein pos mit dem ich dachte das ich das carriage return finden kann findet es aber nicht
Wie kann ich denn das carriage return finden?

Gruss
Andreas
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:50 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz