Das ist auch nicht weiter verwunderlich
schickst du doch den FileStream immer wieder an das Ende der Datei und dann zurück an die aktuelle Leseposition (
FileStrm1.Size
).
Darum solltest du dir die Größe des Streams zwischenspeichern, dann sollte das erheblich schneller vonstatten gehen
Delphi-Quellcode:
var
FileStrm1: TFileStream;
LStreamSize : Int64; // lokale Variable
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;
// Stream-Size merken
LStreamSize := FileStrm1.Size;
// und damit prüfen
while FileStrm1.Position < LStreamSize 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
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ea 0a 4c 14 0d b6 3a a4 c1 c5 b9
dc 90 9d f0 e9 de 13 da 60)