Je cherche a créer une fonction de recherche d'une valeur donnée dans un fichier.
La fonction suivante renvoie vrai dans tout les cas.
Je ne vois vraiment pas, où est l'erreur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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;
Si quelqu'un pouvait m'éclairer ... ?
![]()
Partager