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...