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

Tutoriel: écrivez votre propre findfiles outil : Plusieurs milliers de conseils pour vous faciliter la vie.
Recommander aux amis
  • gplus
  • pinterest

Messages récents

Commentaire

Laisser un commentaire

évaluation