
A mellékelt példaprogram megnyitása előtt a FindInFile.pas-ban lévő komponenst telepítenie kell a Delphi alá.
FileName
Osztály: TFindInFile
property FileName: TFileName;
Annak a fájlnak a neve, amiben a bájtsorozatot keressük.
Options
Osztály: TFindInFile
property Options: TFindOptions;
Ebben a property-ben két tulajdonságot állíthatunk be, ezek a következők:
- foCaseInsensitive: ha szöveget keresünk, akkor használhatjuk ezt az opciót. Ha be van állítva, akkor a kis- és nagybetűk között nem tesz különbséget;
- foContinuous: ha be van állítva, akkor a keresés folyamatosan történik, minden találatkor egy OnFound eseményt kiváltva. Ha nincs megadva, akkor a keresés az első találat után leáll.
ProgStep
Osztály: TFindInFile
property ProgStep: integer;
Ha a műveletet egy folyamatjelzőn szeretnénk megjeleníteni, akkor ebben a property-ben megadhatjuk, hogy milyen lépésközönként (százalék) jöjjön létre az OnProgress esemény. Ha a property értéke 0, akkor az OnProgress esemény sohasem lesz meghívva.
OnFound
Osztály: TFindInFile
property OnFound: TFindEvent;
Ez az esemény akkor jön létre, amikor a fájlban a keresett bájtsorozatot megtalálta a komponens. A Position paraméterben megkapjuk a bájtsorozat első bájtjának pozícióját is a fájlon belül.
OnBeforeExecute
Osztály: TFindInFile
property OnBeforeExecute: TNotifyEvent;
Ez az esemény az Execute függvény meghívásakor jön létre, mielőtt még a fájl meg lenne nyitva.
OnAfterExecute
Osztály: TFindInFile
property OnAfterExecute: TNotifyEvent;
Az esemény az Execute függvény végén jön létre, tehát a keresés után.
OnProgress
Osztály: TFindInFile
property OnProgress: TProgressEvent;
Ezt az eseményt használhatjuk fel, ha a műveletet egy folyamatjelzőn szeretnénk megjeleníteni. A Progress paraméterben megkapjuk, hogy éppen hány százaléknál tart a keresés. Az esemény a ProgStep property-ben megadott lépésközönként jön létre.
Execute
Osztály: TFindInFile
function Execute(
FindData: PChar;
DataLen: word
): boolean;
Ezzel a függvénnyel indíthatjuk a keresést.
Paraméterek
FindData: PChar
Ebben a paraméterben a keresett bájtsorozatra mutató pointert kell megadni.
DataLen: word
A bájtsorozat hosszát adhatjuk meg ebben a paraméterben.
Visszatérési érték
A függvény visszatérési értéke igaz, ha legalább egy találat volt, és hamis, ha egy sem.
Megjegyzés
A függvényben először is generálunk egy OnBeforeExecute eseményt a BeforeExecute eljárás meghívásával. Ezután megnyitjuk a fájlt olvasásra, és elkezdjük bájtonként beolvasni. A beolvasás addig történik, amíg az összes bájtot be nem olvastuk, vagy a br változó értéke igaz nem lesz. Ha a beolvasott bájt ugyanaz, mint a keresett bájtsorozat adott sorszámú (p) bájtja, akkor a p változó értékét növeljük 1-el. Ha a p változó egyenlő lesz a DataLen paraméter értékével, vagyis a keresett bájtsorozat hosszával, akkor ez egy találatot jelent. Ekkor generálunk egy OnFound eseményt a Found eljárás meghívásával, a függvény visszatérési értékét igazra állítjuk, a p változó értékét pedig 0-ra. Ha az Options property nem tartalmazza az foContinuous értéket, akkor a br változó értékét igazra állítjuk, ennek következtében a keresés leáll.
Ha a ProgStep property értéke nagyobb mint 0, akkor kiszámoljuk, hogy éppen hány százaléknál tart a keresés (a fájl hány százalékát olvastuk eddig be), és ha ez maradék nélkül osztható a ProgStep property-ben beállított értékkel, vagy éppen 100%, akkor generálunk egy OnProgress eseményt a Progress eljárás meghívásával.