Zoeken naar bestanden en mappen met Delphi

Bij het zoeken naar bestanden is het vaak handig en noodzakelijk om in submappen te zoeken. Bekijk hier hoe u het kunt gebruiken Delphi's kracht om een ​​eenvoudig, maar krachtig project voor alle bestanden te vinden dat bij elkaar past.

Bestand / mapmasker zoekproject

Met het volgende project kunt u niet alleen naar bestanden zoeken in submappen, maar kunt u ook gemakkelijk bestandskenmerken bepalen, zoals naam, grootte, wijzigingsdatum, enz. zodat u kunt zien wanneer u het dialoogvenster Bestandseigenschappen moet oproepen vanuit de Windows Explorer. Het laat met name zien hoe u recursief door submappen kunt zoeken en een lijst met bestanden kunt samenstellen die overeenkomen met een bepaald bestandsmasker. De recursietechniek wordt gedefinieerd als een routine die zichzelf midden in de code noemt.

Om de code in het project te begrijpen, moeten we ons vertrouwd maken met de volgende drie methoden die zijn gedefinieerd in de SysUtils-eenheid: FindFirst, FindNext en FindClose.

FindFirst

instagram viewer

FindFirst is de initialisatieaanroep om een ​​gedetailleerde zoekprocedure voor bestanden te starten met Windows API-aanroepen. De zoekopdracht zoekt naar bestanden die overeenkomen met de Path-specificatie. Het pad bevat meestal jokertekens (* en?). De parameter Attr bevat combinaties van bestandskenmerken om de zoekopdracht te beheren. De in Attr herkende bestandskenmerkconstanten zijn: faAnyFile (elk bestand), faDirectory (mappen), faReadOnly (alleen-lezen bestanden), faHidden (verborgen bestanden), faArchive (archiefbestanden), faSysFile (systeembestanden) en faVolumeID (volume-ID-bestanden).

Als FindFirst een of meer overeenkomende bestanden vindt, retourneert het 0 (of een foutcode voor fouten, meestal 18) en vult het Rec in met informatie over het eerste overeenkomende bestand. Om de zoekopdracht voort te zetten, moeten we hetzelfde TSearcRec-record gebruiken en doorgeven aan de FindNext-functie. Wanneer het zoeken is voltooid, moet de FindClose-procedure worden aangeroepen om interne Windows-bronnen vrij te maken. De TSearchRec is een record gedefinieerd als:

Wanneer het eerste bestand is gevonden, is de Rec-parameter gevuld en kunnen de volgende velden (waarden) door uw project worden gebruikt.
. Attr, de bestandskenmerken zoals hierboven beschreven.
. Naam bevat een tekenreeks die een bestandsnaam vertegenwoordigt, zonder padinformatie
. Grootte in bytes van het gevonden bestand.
. Tijd slaat de wijzigingsdatum en -tijd van het bestand op als bestandsdatum.
. FindData bevat aanvullende informatie zoals de aanmaaktijd van het bestand, de laatste toegangstijd en zowel de lange als de korte bestandsnamen.

FindNext

De FindNext-functie is de tweede stap in de gedetailleerde zoekprocedure voor bestanden. U moet hetzelfde zoekrecord (Rec) doorgeven dat is gemaakt door de aanroep van FindFirst. De geretourneerde waarde van FindNext is nul voor succes of een foutcode voor elke fout.

FindClose

Deze procedure is de vereiste beëindigingsaanroep voor een FindFirst / FindNext.

Recursief bestandsmasker zoeken in Delphi

Dit is het project "Zoeken naar bestanden" zoals het tijdens runtime verschijnt. De belangrijkste componenten op het formulier zijn twee invoervakjes, een keuzelijst, een selectievakje en een knop. Bewerkingsvakken worden gebruikt om het pad op te geven waarin u wilt zoeken en een bestandsmasker. Gevonden bestanden worden weergegeven in de keuzelijst en als het selectievakje is ingeschakeld, worden alle submappen gescand op overeenkomende bestanden.

Hieronder vindt u het kleine codefragment van het project, om te laten zien dat het zoeken naar bestanden met Delphi zo eenvoudig mogelijk is:

instagram story viewer