Einzelnen Beitrag anzeigen

endeffects

Registriert seit: 27. Jun 2004
450 Beiträge
 
#23

Re: Text Dateien (500mb+) in einen String einlesen

  Alt 14. Okt 2004, 19:01
nabends,

ich möchte euch nochmal für eure hilfe und gedult danken,
im großen und ganzen läuft das nun, die 500mb datei
wird innerhalb von ein paar sekunden abgearbeitet,
jetzt muss ich nur noch sicher stellen das strings
die ersetzt werden sollen nicht durch die puffer
größe zerstückelt werden, aber ich denke das bekomm
ich auch alleine hin

@FAlter die fastreplace funktion stammt aus einer unit
deren link ich am anfang gepostet hab, damit lassen sich
sehr schnell stringfunktionen abarbeiten, kann ich dir
sehr empfehlen

der aktuelle code schaut nun so aus:

Delphi-Quellcode:
const
BlockSize = 1024;
var SrcStream, DestStream: TFileStream;
    FileName, FileName2, Buffer: String;
    N, ChunkLen: Integer;
begin
  FileName:= 'dump.txt';
  FileName2:= 'dump2.txt';
  try
  SrcStream:=TFileStream.Create(FileName,fmOpenread or fmShareDenyNone);
  DestStream:=TFileStream.Create(FileName2,fmCreate);
    N:=SrcStream.Size;
    while N>0 do
      begin
        if N>BlockSize
          then ChunkLen:=BlockSize
          else ChunkLen:=N;
        SetLength(Buffer,ChunkLen);
        SrcStream.Read(Buffer[1],ChunkLen);
        Buffer:= FastReplace(Buffer,'\n', '', False);
        N:=N-ChunkLen;
        DestStream.Write(Buffer[1],Length(Buffer));
      end;
  finally
    SrcStream.Free;
    DestStream.Free;
  end;
  Mit Zitat antworten Zitat