Lors de la recherche de fichiers, il est souvent utile et nécessaire de rechercher dans les sous-dossiers. Ici, voyez comment utiliser Delphesa la force de créer un projet de recherche de fichiers simple mais puissant.
Projet de recherche de masque de fichier / dossier
Le projet suivant vous permet non seulement de rechercher des fichiers via des sous-dossiers, mais il vous permet également de déterminer facilement les attributs de fichier, tels que le nom, la taille, la date de modification, etc. afin que vous puissiez voir quand invoquer la boîte de dialogue des propriétés de fichier à partir du Windows Explorer. En particulier, il montre comment rechercher récursivement des sous-dossiers et assembler une liste de fichiers qui correspondent à un certain masque de fichier. La technique de récursivité est définie comme une routine qui s'appelle au milieu de son code.
Afin de comprendre le code du projet, nous devons nous familiariser avec les trois méthodes suivantes définies dans l'unité SysUtils: FindFirst, FindNext et FindClose.
FindFirst
FindFirst est l'appel d'initialisation pour démarrer une procédure de recherche de fichier détaillée à l'aide de Appels API Windows. La recherche recherche les fichiers qui correspondent au spécificateur de chemin. Le chemin comprend généralement des caractères génériques (* et?). Le paramètre Attr contient des combinaisons d'attributs de fichier pour contrôler la recherche. Les constantes d'attribut de fichier reconnues dans Attr sont: faAnyFile (n'importe quel fichier), faDirectory (répertoires), faReadOnly (fichiers en lecture seule), faHidden (fichiers cachés), faArchive (fichiers d'archives), faSysFile (fichiers système) et faVolumeID (fichiers d'ID de volume).
Si FindFirst trouve un ou plusieurs fichiers correspondants, il renvoie 0 (ou un code d'erreur pour l'échec, généralement 18) et remplit la Rec avec des informations sur le premier fichier correspondant. Afin de poursuivre la recherche, nous devons utiliser le même enregistrement TSearcRec et le transmettre à la fonction FindNext. Une fois la recherche terminée, la procédure FindClose doit être appelée pour libérer les ressources internes de Windows. TSearchRec est un enregistrement défini comme:
Lorsque le premier fichier est trouvé, le paramètre Rec est rempli et les champs (valeurs) suivants peuvent être utilisés par votre projet.
. Attr, les attributs du fichier comme décrit ci-dessus.
. Nom contient une chaîne qui représente un nom de fichier, sans informations de chemin
. Taille en octets du fichier trouvé.
. Temps stocke la date et l'heure de modification du fichier comme date de fichier.
. FindData contient des informations supplémentaires telles que l'heure de création du fichier, l'heure du dernier accès et les noms de fichier longs et courts.
FindNext
La fonction FindNext est la deuxième étape de la procédure détaillée de recherche de fichiers. Vous devez passer le même enregistrement de recherche (Rec) qui a été créé par l'appel à FindFirst. La valeur de retour de FindNext est zéro pour la réussite ou un code d'erreur pour toute erreur.
FindClose
Cette procédure est l'appel de terminaison requis pour un FindFirst / FindNext.
Recherche de correspondance de masque de fichier récursif dans Delphi
Il s'agit du projet "Recherche de fichiers" tel qu'il apparaît au moment de l'exécution. Les composants les plus importants du formulaire sont deux zones d'édition, une zone de liste, une case à cocher et un bouton. Les zones d'édition sont utilisées pour spécifier le chemin dans lequel vous souhaitez rechercher et un masque de fichier. Les fichiers trouvés sont affichés dans la zone de liste et si la case est cochée, tous les sous-dossiers sont analysés pour rechercher les fichiers correspondants.
Ci-dessous, le petit extrait de code du projet, juste pour montrer que la recherche de fichiers avec Delphi est aussi simple que possible: