1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
| function RechercheInFic(const szFic, szValeur: String): Boolean;
var
Fichier: THandleStream;
Buffer: ArrayChar;
szBuf: String;
FileHandle: Cardinal;
nTaille, nIndex: Integer;
begin
Result := False;
Fichier := nil;
FileHandle := CreateFile(PChar(szFic), GENERIC_READ, FILE_SHARE_READ, nil, OPEN_EXISTING, 0, 0);
if FileHandle = INVALID_HANDLE_VALUE then
Exit;
//.Lecture du fichier.
try
Fichier := THandleStream.Create(FileHandle);
nIndex := 0; nTaille := Fichier.Size;
while(nIndex < nTaille) and (not Result) do
begin
//.Lecture.
if(nTaille - nIndex) < Length(Buffer) then
Fichier.Read(Buffer, (nTaille - nIndex))
else
Fichier.Read(Buffer, Length(Buffer));
szBuf := Buffer;
//.Recherche.
if Pos(AnsiLowerCase(szValeur), AnsiLowerCase(szBuf)) > 0 then // <<-----
Result := True //.Valeur trouvée.
else
begin
//.Déplacement du curseur.
Fichier.Seek(soFromCurrent, - Length(szValeur));
Inc(nIndex, Length(Buffer) - Length(szValeur));
end;
end;
finally
Fichier.Free;
CloseHandle(FileHandle);
end;
end; |
Partager