Einzelnen Beitrag anzeigen

muhael

Registriert seit: 5. Mär 2013
42 Beiträge
 
#1

Große Textdateien spitten

  Alt 29. Okt 2017, 18:20
Delphi-Version: 7
Hallo DP Team,

ich habe eine Funktion die große Textdateien in 4 Dateien splittet.
Nur diese Funktion ist "sehr" langsam, Sie benötigt für eine 1,5 GB große Textdatei 102 Sekunden.
Da die Dateien die mein Programm bearbeiten soll ungefähr in der Größenordnung von 3-4 GB liegen, braucht die Funktion dafür ca 4,5 Minuten und dies ist zu lang.

Gibt es eine Möglichkeit oder eine Funktion die das wesentlich schneller machen kann?
Wichtig zu wissen ist, dass die Datei nur Zeilenweise gesplittet werden kann.


Hier der Funktionscode;

Delphi-Quellcode:
  For i := 0 to 3 do
  begin
    AssignFile(F[i],ExtractFilePath(ParamStr(0)) + 'Test_' + IntToStr(i) + '.txt');
    ReWrite(F[i]);
  end;

  i := 0;
  AssignFile(ff,Epfad.Text);
  Reset(ff);
  while not eof(ff) do
  begin
    inc(i);
    ReadLn(ff, TestText);
    Case i of
      1: WriteLn(F[0],TestText);
      2: WriteLn(F[1],TestText);
      3: WriteLn(F[2],TestText);
      4: WriteLn(F[3],TestText);
    end;
    If i = 4 Then
      i := 0;
  end;
  CloseFile(F[0]);
  CloseFile(F[1]);
  CloseFile(F[2]);
  CloseFile(F[3]);
VG

Vielen Dank und Grüße
  Mit Zitat antworten Zitat