Einzelnen Beitrag anzeigen

k6n

Registriert seit: 13. Feb 2009
13 Beiträge
 
#15

Re: Große Datei sortieren ohne komplett in den Speicher zu l

  Alt 12. Mär 2009, 21:45
So, hab jetzt mal ein bisschen rumprobiert, komme damit aber überhaupt nicht klar.
Es scheitert schon beim blockweisen auslesen. Wenn man einen Block ließt, ist es ja nicht immer sicher, das komplette Zeilen im Block liegen, sondern auch mal abgehackte Zeilen.

Mein kläglicher Versuch:
Delphi-Quellcode:
const
  BUFSIZE = 20; //kleiner Wert zum Testen
var
  sBuf : Ansistring;
  iRead: Integer;
begin
  with TFileStream.Create('c:\test.txt', fmOpenRead) do
    try
      SetLength(sBuf, BUFSIZE);
      iRead := Read(sBuf[1], BUFSIZE);
      while iRead = BUFSIZE do
      begin
        ShowMessage(sBuf); //Testausgabe
        iRead := Read(sBuf[1], BUFSIZE);
      end;
      if iRead > 0 then //Rest
      begin
        SetLength(sBuf, iRead);
        ShowMessage(sBuf); //Testausgabe
      end;
    finally
      Free;
    end;
end;
Bitte um Berichtigung

Zitat von ub60:
Um halbwegs abschätzen zu können, was Du brauchst, konkretisiere doch mal Deine Anforderung:
  • Wie viele Zeilen maximal (Größenordnung)?
  • Welche Zeileninhalte (gut verteilt, Häufungen, ...)?
  • Maximale Zeilenlänge?
ub60
Also die Dateien können schon sehr groß sein (bis zu 300MB) und die Zeilenlängen variieren sehr stark.

@SirThornberry: Die sort.exe kam von cygwin...
  Mit Zitat antworten Zitat