Mit dieser Funktion lassen sich Strings aller Art in Dateien suchen.
Der Rückgabewert ist die Position des zu suchenden Strings, bei einer Fehlsuche gibt die Funktion -1 wieder.
function FindInFile(const FileName : string;
SearchWord : string; MatchCase : Boolean) : Integer;
var
fs : TFileStream;
Buffer : array [1..10000] of Char;
Size : Integer;
idx : Integer;
i : Integer;
begin
Result := -1;
idx := 1;
if not MatchCase then
SearchWord := UpperCase(SearchWord);
fs := TFileStream.Create(FileName, fmopenreadwrite or fmsharedenynone);
try
repeat
Application.ProcessMessages;
Size := (Fs.Size - Fs.Position);
if Size > 10000 then Size := 10000;
Fs.ReadBuffer(Buffer, Size);
if not MatchCase then
begin
for i := 1 to Size do
Buffer[i] := Uppercase(Buffer)[i];
end;
for i := 1 to Size do
begin
if (Buffer[i] = SearchWord[idx]) then
Inc(idx)
else
idx := 1;
if (idx = Length(SearchWord)) then
begin
Result := (fs.Position - Size) + i - idx + 1;
Exit;
end;
end;
until fs.Position >= fs.Size;
finally
fs.Free;
end;
end;
Beispiel :
procedure TForm1.Button1Click(Sender: TObject);
begin
Label1.Caption := IntToStr(FindInFile('c:\1.txt', // Pfad der Datei
'idx', // Der String der gesucht werden soll
true));// Suche aktivieren
end;
Keine Kommentare:
Kommentar veröffentlichen