So ich habs mal mit dem Filestream gemacht. Das geht gar nicht, also von der Geschwindgkeit her ...
Bei einer Textdatei von 8Mb brauchte das ca 36s, mit ReadLn und angepassten TextBuffer hingegen nur ca 65ms.
Delphi-Quellcode:
var
FileStrm1: TFileStream;
Ch: Char;
GesLength: Integer;
Gesucht,Seite: String;
StrList1: TStringList;
begin
Gesucht:= ( UTF8Decode( Edit1.Text ) );
StrList1:= TStringList.Create;
FileStrm1:= TFileStream.Create('Textdatei.txt',fmOpenRead);
try
GesLength:= 0;
while FileStrm1.Position < FileStrm1.Size do
begin
Seite := '';
while (FileStrm1.Read(Ch, 1) = 1) and ( Ch <> #12 ) do //Seite in String speichern
Seite := Seite + Ch;
...
{Textsuche und weitere Auswertung, Ergebnisse in Stringlist speichern...}
...
GesLength:= GesLength + SeitenLength + 1;
end;
finally
FreeAndNil(StrList1);
FreeAndNil(FileStrm1);
end
Ich werde mir noch die Klasse von jaenicke ansehen. Danke für den Hinweis.