Lorsque je me suis mis à chercher des méthodes de recherche récursive de fichiers, j'ai été confronté à des sources utilisant des méthodes différentes que j'ai cherché à comprendre.
Puis voyant que ce thème était souvent recherché, j'ai regroupé 3 des méthodes rencontrées afin de montrer la manière de travailler de chacune d'elles et surtout la vitesse à laquelle elle tourne.
La première méthode est l'exemple livré par Microsoft avec Visual Basic : WINSEEK.VBP.
Celle-ci utilise les contrôles DriveListBox, DirListBox et FileListBox pour effectuer ses recherches.
La deuxième est celle de CML'S RECHERCHER (source n°4404), que j'ai un peu modifié pour mes besoins.
Cette méthode utilise un contrôle ListBox, des fonctions FileSystemObject et la fonction DIR
La troisième méthode (et de loin la plus rapide) est celle provenant du fichier d'aide "apidocvb.chm" dont DARKSIDIOUS parle dans sa source n°5690, "Aide sur les principales API".
Celle-ci utilise les API. Elle permet de récupérer des noms de fichiers de type "~$ojet.doc" ce qui n'est pas le cas avec une FileBox.
Source / Exemple :
'ATTENTION :
' Lorsqu'on fait une recherche de type *.* avec api, le nom de répertoire s'ajoute également à la liste. Pour éviter cela, j'ai ajouter la vérification suivante (lignes entre les ###) dans le code "Rechercher" du module mod_API :
'(...)
'S'il ne s'agit pas du dossier...
If NomDuFichier <> "." And NomDuFichier <> ".." Then
'#############
'S'il ne s'agit pas d'un dossier dans le cas d'une recherche de type *.*
If (lpFindFileData.dwFileAttributes And _
FILE_ATTRIBUTE_DIRECTORY) <> FILE_ATTRIBUTE_DIRECTORY Then
'#####################
'REMARQUE : prend en compte les fichiers de type
' "~$ojet méd.socio-péd. SAJA.doc" pouvant résulter d'un plantage du PC
'ajoute celui-ci à la liste des fichiers trouvés
frmRechercherFichiers.ListView1.ListItems.Add , , NomDuFichier
frmRechercherFichiers.ListView1.ListItems(frmRechercherFichiers.ListView1.ListItems.Count).ListSubItems.Add , , Chemin
'####### pour ne pas l'oublier
End If
'#######
End If
Conclusion :
Il y a peut-être encore d'autres méthodes...
Je sais qu'il y a déjà des sources abordant ce thème sur le site, mais je n'en ai pas encore trouvé qui utilisaient les API (sauf erreur de ma part) et il me semblait important de mettre une source qui montre différents moyens.
PS : il est clair que je n'ai pas privilégié l'esthétique...
6 juin 2008 à 14:25
T'as raison
Alors tu fais *ir* et c'est bon..
Merci
6 juin 2008 à 13:16
As-tu testé en remplaçant ce qu'il te manque par une étoile , genre "*ir" pour les partir, revenir ?
Si ça ne marche pas, il faudra modifier le code pour intégrer cette option.
6 juin 2008 à 10:50
Mais connais tu un moyen de faire la recherche qu'avec une partie du nom du fichier?
Comme on fait avec "InStr"
Ex: on cherche le texte "ir" et il trouve les fichiers "avenir" et "partir"
Sinon rien à dire... merci
25 mai 2008 à 17:54
Simon22
19 févr. 2008 à 06:19
Mais, visiblement, elle reste utile.
Merci pour vos remerciements,
Programmix
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.