DIRLISTING - LISTER UN DOSSIER ET SES SOUS DOSSIERS TRES RAPIDEMENT
cs_ABF
Messages postés227Date d'inscriptionsamedi 21 mai 2005StatutMembreDernière intervention26 avril 2012
-
28 avril 2008 à 13:26
stevenx1
Messages postés3Date d'inscriptionjeudi 2 novembre 2000StatutMembreDernière intervention24 juin 2008
-
24 juin 2008 à 12:38
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
stevenx1
Messages postés3Date d'inscriptionjeudi 2 novembre 2000StatutMembreDernière intervention24 juin 2008 24 juin 2008 à 12:38
Bonjour,
encore moi ;-))
en fait j'ai été trop vite... ça n'est pas 10 fois plus rapide... c'est kif kif... puisque mes anciennes fonctions recherchaient récursivement et qu'ici cela s'arrête du fait de la fonction "ErrRaise"
Sinon, un p'tit détail : étant donné que je recherche des données à plein d'endroits, dans plein de dossiers et sous dossiers, j'arrive à une saturation de handle occupé et cela me bloque l'explorateur ainsi que le réseau...
j'ai donc modifié deux procédures :
Private Sub Class_Terminate()
Dim I As Long
For I = 1 To CurSearch + 1
If Search(I).Handle Then FindClose Search(I).Handle
Next
CurSearch = 0
End Sub
et j'ai ajouter "Class_Terminate" dans la procédure "ErrRaise"
Si ça peut aidé...
Stéphane.
stevenx1
Messages postés3Date d'inscriptionjeudi 2 novembre 2000StatutMembreDernière intervention24 juin 2008 23 juin 2008 à 12:28
Salut santiago69,
Très intérressant ce code...
J'ai testé ta classe car j'ai besoin de lister plusieurs centaines de fichiers qui se trouve dans de nombreux sous-dossier sur le réseau...
--> Réultat, question rapidité, c'est 10 fois + rapide que la fonction DIR ou même le FSO...
Petite remarque tout le même, concernant la fonction de récursivité :
Lorsque l'on fait une recherche avec un filtre, du style :
dl.Dir "C:\WINDOWS\system32\*.txt", Not dlDirectory
si aucun fichier n'est trouvé dans le premier dossier, la fonction ne regarde pas dans les sous dossier (comme pourrait le faire, sous DOS, cette commande :
Dir C:\WINDOWS\system32\*.sav /s
Bonne continuation,
Stéphane.
cs_ABF
Messages postés227Date d'inscriptionsamedi 21 mai 2005StatutMembreDernière intervention26 avril 2012 28 avril 2008 à 13:26
Slt,
Bien commenté malgrés pas mal de code déjà existants !
Il a au moins l'intéret d'etre concis et bien expliqué ;)
Je regarderais en détail plus tard (pas le tps en ce moment)
24 juin 2008 à 12:38
encore moi ;-))
en fait j'ai été trop vite... ça n'est pas 10 fois plus rapide... c'est kif kif... puisque mes anciennes fonctions recherchaient récursivement et qu'ici cela s'arrête du fait de la fonction "ErrRaise"
Sinon, un p'tit détail : étant donné que je recherche des données à plein d'endroits, dans plein de dossiers et sous dossiers, j'arrive à une saturation de handle occupé et cela me bloque l'explorateur ainsi que le réseau...
j'ai donc modifié deux procédures :
Private Sub Class_Terminate()
Dim I As Long
For I = 1 To CurSearch + 1
If Search(I).Handle Then FindClose Search(I).Handle
Next
CurSearch = 0
End Sub
et j'ai ajouter "Class_Terminate" dans la procédure "ErrRaise"
Si ça peut aidé...
Stéphane.
23 juin 2008 à 12:28
Très intérressant ce code...
J'ai testé ta classe car j'ai besoin de lister plusieurs centaines de fichiers qui se trouve dans de nombreux sous-dossier sur le réseau...
--> Réultat, question rapidité, c'est 10 fois + rapide que la fonction DIR ou même le FSO...
Petite remarque tout le même, concernant la fonction de récursivité :
Lorsque l'on fait une recherche avec un filtre, du style :
dl.Dir "C:\WINDOWS\system32\*.txt", Not dlDirectory
si aucun fichier n'est trouvé dans le premier dossier, la fonction ne regarde pas dans les sous dossier (comme pourrait le faire, sous DOS, cette commande :
Dir C:\WINDOWS\system32\*.sav /s
Bonne continuation,
Stéphane.
28 avril 2008 à 13:26
Bien commenté malgrés pas mal de code déjà existants !
Il a au moins l'intéret d'etre concis et bien expliqué ;)
Je regarderais en détail plus tard (pas le tps en ce moment)
Bonne continuation !