Sådan søger du efter filer og mapper med Delphi

click fraud protection

Når man søger efter filer, er det ofte nyttigt og nødvendigt at søge gennem undermapper. Se her, hvordan du bruger Delphistyrke til at skabe et enkelt, men kraftfuldt, alt-matchende-filer-projekt.

File / Folder Mask Search Project

Det følgende projekt giver dig ikke kun mulighed for at søge efter filer gennem undermapper, men det giver dig også let mulighed for at bestemme filattributter, f.eks. Navn, størrelse, ændringsdato osv. så du kan se, hvornår du skal aktivere dialogboksen Filegenskaber fra Windows Stifinder. Især demonstrerer det, hvordan man rekursivt kan søge gennem undermapper og samle en liste over filer, der matcher en bestemt filmaske. Rekursionsteknikken defineres som en rutine, der kalder sig selv midt i dens kode.

For at forstå koden i projektet skal vi gøre os bekendt med de næste tre metoder, der er defineret i SysUtils-enheden: FindFirst, FindNext og FindClose.

Findfirst

FindFirst er initialiseringsopkaldet for at starte en detaljeret filsøgningsprocedure ved hjælp af

instagram viewer
Windows API-opkald. Søgningen søger efter filer, der svarer til stedsspecifikationen. Stien indeholder normalt jokertegn (* og?). Attr-parameter indeholder kombinationer af filattributter til kontrol af søgningen. Filattributkonstanterne, der genkendes i Attr, er: faAnyFile (hvilken som helst fil), faDirectory (mapper), faReadOnly (læs kun filer), faHidden (skjulte filer), faArchive (arkivfiler), faSysFile (systemfiler) og faVolumeID (lydstyrke-ID-filer).

Hvis FindFirst finder en eller flere matchende filer returnerer den 0 (eller en fejlkode for fejl, normalt 18) og udfylder Rec med oplysninger om den første matchende fil. For at fortsætte søgningen skal vi bruge den samme TSearcRec-post og videregive den til FindNext-funktionen. Når søgningen er afsluttet, skal FindClose-proceduren kaldes for at frigøre interne Windows-ressourcer. TSearchRec er en post defineret som:

Når den første fil findes, udfyldes Rec-parameteren, og de følgende felter (værdier) kan bruges af dit projekt.
. attr, filens attributter som beskrevet ovenfor.
. Navn har en streng, der repræsenterer et filnavn, uden stiinformation
. Størrelse i bytes af den fundne fil.
. Tid gemmer filens ændringsdato og -tid som en fildato.
. FindData indeholder yderligere oplysninger såsom filoprettelsestid, sidste adgangstid og både de lange og korte filnavne.

FindNext

FindNext-funktionen er det andet trin i den detaljerede filsøgningsprocedure. Du skal videregive den samme søgepost (Rec), der er oprettet ved opkaldet til FindFirst. Returværdien fra FindNext er nul for succes eller en fejlkode for enhver fejl.

FindClose

Denne procedure er det krævede afslutningsopkald til et FindFirst / FindNext.

Rekursiv filmaske matchende søgning i Delphi

Dette er projektet "Søgning efter filer", som det ser ud på kørselstidspunktet. De vigtigste komponenter på formularen er to redigeringsbokse, et listefelt, et afkrydsningsfelt og en knap. Redigeringsbokse bruges til at specificere den sti, du vil søge i, og en filmaske. Fundne filer vises i listefeltet, og hvis afkrydsningsfeltet er markeret, scannes alle undermapper for matchende filer.

Nedenfor er det lille kodestykket fra projektet, bare for at vise, at det er så let som muligt at søge efter filer med Delphi:

instagram story viewer