Bestanden en mappen zoeken met Delphi

Bij het zoeken naar bestanden is het vaak nuttig en noodzakelijk om door submappen te zoeken. Bekijk hier hoe je de kracht van Delphi kunt gebruiken om een ​​eenvoudig, maar krachtig project te vinden dat met alle bestanden overeenkomt.

Bestand / map masker zoeken project

Met het volgende project kunt u niet alleen naar bestanden zoeken via submappen, maar kunt u ook eenvoudig bestandskenmerken bepalen, zoals Naam, Grootte, Modificatiedatum, enz. Zodat u kunt zien wanneer u het dialoogvenster Bestandseigenschappen kunt oproepen vanuit Windows Verkenner. 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 techniek van recursie 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

FindFirst is de initialisatie-oproep om een ​​gedetailleerde zoekprocedure voor bestanden te starten met behulp van Windows API-oproepen. De zoekopdracht zoekt naar bestanden die overeenkomen met de Pad-specificatie. Het pad bevat meestal jokertekens (* en?). De parameter Attr bevat combinaties van bestandskenmerken om de zoekactie te besturen. De bestandsattribuutconstanten die worden herkend in Attr zijn: faAnyFile (elk bestand), faDirectory (Directories), faReadOnly (alleen bestanden lezen), faHidden (verborgen bestanden), faArchive (archiefbestanden), faSysFile (systeembestanden) en faVolumeID (volume ID-bestanden).

Als FindFirst een of meer overeenkomende bestanden vindt, retourneert deze 0 (of een foutcode voor fouten, meestal 18) en vult de Rec met informatie over het eerste overeenkomende bestand in. Om door te gaan met zoeken, moeten we hetzelfde TSearcRec-record gebruiken en dit doorgeven aan de functie FindNext. Wanneer de zoekopdracht 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, wordt de parameter Rec ingevuld en kunnen de volgende velden (waarden) door uw project worden gebruikt.
. attr, de kenmerken van het bestand 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 een bestandsdatum.
. FindData bevat aanvullende informatie zoals de aanmaaktijd van het bestand, de laatste toegangstijd en zowel de lange als de korte bestandsnaam.

FindNext

De functie FindNext 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 retourwaarde van FindNext is nul voor succes of een foutcode voor een fout.

FindClose

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

Recursief bestandsmasker matching zoeken in Delphi

Dit is het project "Zoeken naar bestanden" zoals het tijdens de uitvoering wordt weergegeven. De belangrijkste componenten op het formulier zijn twee bewerkingsvakken, 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 het vak Lijst en als het selectievakje is ingeschakeld, worden alle submappen gescand op overeenkomende bestanden.

Hieronder is het kleine codefragment van het project, om aan te geven dat het zoeken naar bestanden met Delphi zo eenvoudig mogelijk is: