Pri iskanju datotek je pogosto koristno in potrebno iskanje po podmapah. Tukaj si oglejte, kako uporabljati Delphimoč za ustvarjanje preprostega, a zmogljivega projekta za iskanje datotek.
Projekt iskanja datotek / map mask
Naslednji projekt ne omogoča le iskanja datotek po podmapah, ampak tudi enostavno določite atribute datotek, kot so ime, velikost, datum spremembe itd. tako lahko vidite, kdaj se lahko prikličete v pogovorno okno Lastnosti datotek Windows Explorer. Še posebej prikazuje, kako rekurzivno iščete po podmapah in sestavite seznam datotek, ki ustrezajo določeni datotečni maski. Tehnika rekurzije je definirana kot rutina, ki se pokliče sredi kode.
Da bi razumeli kodo v projektu, se moramo seznaniti z naslednjimi tremi metodami, opredeljenimi v enoti SysUtils: FindFirst, FindNext in FindClose.
FindFirst
FindFirst je inicializacijski klic za začetek podrobnega postopka iskanja datotek z uporabo Windows API klici. Iskanje išče datoteke, ki se ujemajo s specifikatorjem Path. Pot običajno vključuje znake z velikimi črkami (* in?). Parameter Attr vsebuje kombinacije atributov datotek za nadzor iskanja. Konceptne atribute datoteke, prepoznane v Attr, so:
faAnyFile (poljubno datoteko), faDirectory (imeniki), FaReadOly (samo branje datotek), skrita (skrite datoteke), faArchive (arhivske datoteke), faSysFile (sistemske datoteke) in faVolumeID (datoteke z obsegom ID).Če FindFirst najde eno ali več ujemajočih se datotek, vrne 0 (ali kodo napake zaradi napake, ponavadi 18) in napolni Rec s podatki o prvi ujemajoči se datoteki. Za nadaljevanje iskanja moramo uporabiti isti zapis TSearcRec in ga posredovati funkciji FindNext. Ko je iskanje končano, morate poklicati postopek FindClose, da sprostite notranje vire Windows. TSearchRec je zapis, opredeljen kot:
Ko najdete prvo datoteko, je parameter Rec zapolnjen in vaš projekt lahko uporabi naslednja polja (vrednosti).
. Attr, atribute datoteke, kot je opisano zgoraj.
. Ime vsebuje niz, ki predstavlja ime datoteke, brez podatkov o poti
. Velikost v bajtih najdene datoteke.
. Čas shrani datum in čas spremembe datoteke kot datum datoteke.
. FindData vsebuje dodatne informacije, kot so čas ustvarjanja datoteke, zadnji čas dostopa ter dolga in kratka imena datotek.
FindNext
Funkcija FindNext je drugi korak v podrobnem postopku iskanja datotek. Morate prenesti isti zapis o iskanju (Rec), ki je bil ustvarjen s klicem FindFirst. Povratna vrednost FindNext je nič za uspeh ali koda napake za vsako napako.
FindClose
Ta postopek je obvezen klic odpovedi za FindFirst / FindNext.
Rekurzivna maska datotek, ki ustreza iskanju v Delfih
To je projekt "Iskanje datotek", kot je videti v času izvajanja. Najpomembnejše komponente na obrazcu so dva polja za urejanje, eno okence s seznami, potrditveno polje in gumb. Polja za urejanje se uporabljajo za določanje poti, po kateri želite iskati, in masko datoteke. Najdene datoteke se prikažejo v polju Seznam in če je potrditveno polje, se vse podmape skenirajo tako, da ustrezajo datotekam.
Spodaj je majhen delček kode iz projekta, samo da pokažemo, da je iskanje datotek z Delphijem tako enostavno, kot je lahko: