Tutoriel: écrivez votre propre findfiles outil
Comment faire pour utiliser la méthode FindFirst et FindNext avec la récursivité, pour l'ajout de noms de fichiers et les chemins d'accès à une stringlist
Comment faire pour créer une liste de fichiers dans un dossier et ses sous-dossiers
Dans ce bref tutoriel, Je vais vous montrer les bases pour la rédaction de votre propre 'Rechercher des Fichiers' de l'outil.
La procédure de FindFiles(FilesList, StartDir, FileMask) permet de localiser des fichiers dans un dossier et ses sous-dossiers. Les fichiers correspondant à un filemask que vous spécifiez.
Paramètre FilesList est une stringlist à laquelle les chemins complets des fichiers seront ajoutés.
Dans le paramètre StartDir vous passez le répertoire de départ (dossier), y compris le lecteur de disque. Si vous souhaitez rechercher un disque entier, vous spécifiez le répertoire racine du disque (C:\ ou:\
Dans le paramètre FileMask vous passez le nom du fichier à trouver, ou à un masque de fichier avec des caractères génériques (* et ?). Exemples:
FindFiles(FilesList, 'c:\', 'letter01.doc')
FindFiles(FilesList, 'c:\', '*.dpr')
FindFiles(FilesList, 'd:\projects', 'test??.dpr')
Si vous voulez essayer cette procédure, ajouter les composants suivants d'un formulaire:
- deux Modifications (un pour le répertoire de départ, un pour le masque)
- Bouton
- un TLabel
- une ListBox
Le code source de FindFiles
Dans FindFiles nous utiliser la récursivité: les appels de procédure elle-même, afin de trouver les fichiers qui se trouvent dans des sous-répertoires.
procédure FindFiles(FilesList: TStringList StartDir, FileMask: string) var SR: TSearchRec DirList: TStringList IsFound: Boolean i: integer begin si StartDir[Longueur(StartDir)] < > ' \ ' StartDir := StartDir '\' // Génération d'une liste de fichiers dans le répertoire StartDir // Ne pas inclure les répertoires! IsFound := FindFirst(StartDir FileMask, faAnyFile-faDirectory, SR) = 0 alors que IsFound do begin FilesList.Ajouter(StartDir SR.Nom) IsFound := FindNext(SR) = 0 fin FindClose(SR) // créer une liste de sous-répertoires DirList := TStringList.Créer IsFound := FindFirst(StartDir '*.*', faAnyFile, SR) = 0 alors que IsFound do begin if ((SR.Attr et faDirectory) <> 0) et (SR.Nom[1] <> '.') puis DirList.Ajouter(StartDir SR.Nom) IsFound := FindNext(SR) = 0 fin FindClose(SR) // Recherche la liste des sous-répertoires de manière récursive for i := 0 to DirList.Count-1 do FindFiles(DirList[i], FileMask) DirList.Gratuit fin |
Comment utiliser FindFiles?
Avant d'appeler FindFiles, vous créez une stringlist à qui FindFiles va ajouter les chemins complets des fichiers trouvés. Le contenu de la stringlist peuvent être affichées dans un contrôle listbox, enregistré sur un disque, quel qu'il soit... Enfin, vous avez pour gratuit ce stringlist.
procedure TForm1.ButtonFindClick(Sender: TObject) var FilesList: TStringList begin FilesList := TStringList.Créer FindFiles(FilesList, EditStartDir.Texte, EditFileMask.Texte) ListBox1.Éléments.Attribuer(FilesList) LabelCount.Caption := 'Fichiers trouvés:' IntToStr(FilesList.Le comte) // d'Autres cas de traitement avec la liste des fichiers... // ... enfin FilesList.Gratuit fin fin
|
Tutoriel: ecrivez votre propre findfiles outil
Tutoriel: ecrivez votre propre findfiles outil : Plusieurs milliers de conseils pour vous faciliter la vie.
Comment faire pour utiliser la methode FindFirst et FindNext avec la recursivite, pour l'ajout de noms de fichiers et les chemins d'acces a une stringlist
Comment faire pour creer une liste de fichiers dans un dossier et ses sous-dossiers
Dans ce bref tutoriel, Je vais vous montrer les bases pour la redaction de votre propre 'Rechercher des Fichiers' de l'outil.
La procedure de FindFiles(FilesList, StartDir, FileMask) permet de localiser des fichiers dans un dossier et ses sous-dossiers. Les fichiers correspondant a un filemask que vous specifiez.
Parametre FilesList est une stringlist a laquelle les chemins complets des fichiers seront ajoutes.
Dans le parametre StartDir vous passez le repertoire de depart (dossier), y compris le lecteur de disque. Si vous souhaitez rechercher un disque entier, vous specifiez le repertoire racine du disque (C:\ ou:\
Dans le parametre FileMask vous passez le nom du fichier a trouver, ou a un masque de fichier avec des caracteres generiques (* et ?). Exemples:
FindFiles(FilesList, 'c:\', 'letter01.doc')
FindFiles(FilesList, 'c:\', '*.dpr')
FindFiles(FilesList, 'd:\projects', 'test??.dpr')
Si vous voulez essayer cette procedure, ajouter les composants suivants d'un formulaire:
- deux Modifications (un pour le repertoire de depart, un pour le masque)
- Bouton
- un TLabel
- une ListBox
Le code source de FindFiles
Dans FindFiles nous utiliser la recursivite: les appels de procedure elle-meme, afin de trouver les fichiers qui se trouvent dans des sous-repertoires.
procedure FindFiles(FilesList: TStringList StartDir, FileMask: string) var SR: TSearchRec DirList: TStringList IsFound: Boolean i: integer begin si StartDir[Longueur(StartDir)] < > ' \ ' StartDir := StartDir '\' // Generation d'une liste de fichiers dans le repertoire StartDir // Ne pas inclure les repertoires! IsFound := FindFirst(StartDir FileMask, faAnyFile-faDirectory, SR) = 0 alors que IsFound do begin FilesList.Ajouter(StartDir SR.Nom) IsFound := FindNext(SR) = 0 fin FindClose(SR) // creer une liste de sous-repertoires DirList := TStringList.Creer IsFound := FindFirst(StartDir '*.*', faAnyFile, SR) = 0 alors que IsFound do begin if ((SR.Attr et faDirectory) <> 0) et (SR.Nom[1] <> '.') puis DirList.Ajouter(StartDir SR.Nom) IsFound := FindNext(SR) = 0 fin FindClose(SR) // Recherche la liste des sous-repertoires de maniere recursive for i := 0 to DirList.Count-1 do FindFiles(DirList[i], FileMask) DirList.Gratuit fin |
Comment utiliser FindFiles?
Avant d'appeler FindFiles, vous creez une stringlist a qui FindFiles va ajouter les chemins complets des fichiers trouves. Le contenu de la stringlist peuvent etre affichees dans un controle listbox, enregistre sur un disque, quel qu'il soit... Enfin, vous avez pour gratuit ce stringlist.
procedure TForm1.ButtonFindClick(Sender: TObject) var FilesList: TStringList begin FilesList := TStringList.Creer FindFiles(FilesList, EditStartDir.Texte, EditFileMask.Texte) ListBox1.Elements.Attribuer(FilesList) LabelCount.Caption := 'Fichiers trouves:' IntToStr(FilesList.Le comte) // d'Autres cas de traitement avec la liste des fichiers... // ... enfin FilesList.Gratuit fin fin
|
Tutoriel: écrivez votre propre findfiles outil
By commentfaire
Tutoriel: écrivez votre propre findfiles outil : Plusieurs milliers de conseils pour vous faciliter la vie.