Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

DIR RÉCURSIF MULTI-FILTRES EN UNE SEULE PASSE [MODULE / MODULE DE CLASSE]


Information sur la source

Catégorie :Modules Classé sous : dir, recursivité, lister, class, afck Niveau : Débutant Date de création : 08/07/2008 Date de mise à jour : 13/07/2008 18:35:41 Vu / téléchargé: 2 748 / 291

Note :
10 / 10 - par 2 personnes
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (12)
Ajouter un commentaire et/ou une note


Description

Cliquez pour voir la capture en taille normale
Pour un autre projet j'avais besoin de faire un DIR récursif sans passer par l'horrible FSO.
puis de fil en aiguille, le résultat est plutôt pas mal concernant les arguments à passer


ici le but est uniquement de pouvoir faire un dir sur un dossier selon un ou plusieurs filtres (*.txt, *.bmp) simultanément, en incluant ou non les sous-répertoires, retourner les fichiers et/ou les répertoires
pas un concours de vitesse ou autre...


il existe bien d'autres sources, mais apparemment aucune cumulant ces avantages.
cependant si vous avez des idées d'améliorations ;)


le code principal est donc dans la classe.
mais comme je lis souvent "ouai mais j'arrive pas à l'intégrer....", le code est aussi fourni sous forme de module standard (2 projets 'exemple' distincts)
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

08 juillet 2008 02:21:26 :
.
08 juillet 2008 18:03:20 :
*** suppr type RECT égaré _ *** propriété filters, méthode addfilter, modif de la méthode principale en conséquence _ *** affichage dossier ellipsis + en tooltip _ *** ajout d'un exemple "simple" dans le module et la classe, en commentaires
13 juillet 2008 18:35:42 :
gestion des dossiers et fichiers unicode

Commentaires et avis

signaler à un administrateur
Commentaire de mortalino le 08/07/2008 16:27:45 10/10

salut PCPT,

sympa cette source, peut être très utile ;)

Pas grand chose à dire concernant ton code (pas assez avancé pour me permettre), cependant (et oui, il y a toujours un 'mais') :

1/ (facile :D) type RECT pas utilisé (merci MZ-tools)
2/ J'aurais bien aimé avoir indépendamment une propriété Filter (pour la classe). Cela serait plus facile pour réutiliser ta class.
3/ Si le nom du dossier + fichier est long, il n'apparait pas entièrement dans le Lbl_Path, ni dans le LB_Result. TooltipText ? (ou autre)

Pour comprendre, un moment j'ai vu que pour l'attribution de valeurs à tes constantes (valeurs décimales), tu mettais le '&'. Y'a t-il une raison particulière ? (ou c'est une façon conventionnelle d'attribuer une valeur comme ceci)
ex : [Private Const MAX_PATH As Long = 260&]

A part ça, code excellent (bien codé et bien commenté), et je trouve que la recherche se fait très rapidement, bien qu'apparemment ce n'était pas le but :)

Bonne continuation
@++

signaler à un administrateur
Commentaire de PCPT le 08/07/2008 16:50:22 administrateur CS

Salut Mortalino,

merci pour ton comm et note ;)

1/ RECT -> ohohoh ouai c'est facile :D
ce vieux usercontrol fait à l'arrache^^. ok c'est supprimé mais c'est drôle, je n'avais jamais essayé le "examiner le code source" directement sur le VBP, astuce pratique merci :p

2/ ok je regarde çà en propriété

3/ va pour un tooltip (je pensais pourtant que 2 lignes suffisaient. çà reste néanmoins que de l'interface tout çà ;))

4/ 260&
oui c'est surtout conventionnel.
en fait MAX_PATH attend un long (puisque déclarée en long)
MsgBox VarType(260)     ' => vbInteger
tandis que
MsgBox VarType(260&)    ' => vbLong

c'est d'ailleurs la même chose en hexa avec '&H104' et '&H104&'
donc on donne juste ce que la variable attend ;)

je modifie tout çà au plus vite ;)

signaler à un administrateur
Commentaire de PCPT le 08/07/2008 18:05:50 administrateur CS

maj, voir détails histo 08 juillet 2008 18:03:20

toutes tes demandes sont faites ;)
(m'étais aussi gouré dans les dates description + un pavé de code en commentaire)

++ ;)

signaler à un administrateur
Commentaire de Charles Racaud le 08/07/2008 22:15:23

Aller, une petite remarque, désolé, je devient un peu maniaque la dessus (à force de bosser sur des système en jap) : ca gère pas l'unicode. Si j'ai un dossier qui contient des caractère en unicode, il n'est pas traité.

Sinon, très bonne source. Ca m'évitera de refaire un module de listing à chaque fois.
Bon coding.
__
Kenji

signaler à un administrateur
Commentaire de EBArtSoft le 08/07/2008 22:57:57 administrateur CS

Bien

signaler à un administrateur
Commentaire de PCPT le 13/07/2008 18:38:27 administrateur CS

Maj à la demande de Kenji => les fonctions sont maintenant ASCII ou Unicode
paramètre pour le module, propriété pour la classe

pas mal de tests et çà a été moins évident que je ne le pensais mais çà a l'air d'être bon
(enfin j'espère ^^)

signaler à un administrateur
Commentaire de titicar le 17/07/2008 19:21:21 10/10

Merci PCPT,ça marche tout simplement très bien.
Ta source est nettement plus pratique et plus rapide comparé à ce que j'utilise actuellement.
Je n'ai pas essayé le projet 'module'. Les class, c'est tout de même plus flexible.

Par curiosité, dans la prop. Filters, j'ai essayé :
- "r*.dll" -> Ca marche nickel
- "re*.mp3" -> Ca m'affiche tout ce qui commence par 're', mais aussi ce qui commence par 'r.e'
- "r.e*.mp3" -> Ca marche nickel
Je suppose que c'est FindFirstFileA qui gère ça ainsi.

Sinon, c'est courageux de s'attaquer à l'UNICODE sous VB6 car c'est vraiment pas évident pour l'affichage.

Je note 10 car je n'ai pas vu mieux.

signaler à un administrateur
Commentaire de VBtoTRASH le 18/07/2008 15:56:42

Pourquoi faire compliqué (API,Skin ...) quand on peut faire beaucoup plus simple et surtout efficace.
Pas de paramétrage ... plante à tous vents ... source sans intérêt ... dll manquante ... la liste est longue.

A mettre dans le récipient du dessus!

signaler à un administrateur
Commentaire de PCPT le 18/07/2008 16:23:47 administrateur CS

titicar -> merci pour ton comm. je vais tout de même revoir le code (un peu plus tard) pour qu'il soit un peu plus rapide

VBtoTRASH -> pour l'interface je me demande aussi...
pour le reste, j'vais te laisser te trouver un autre bouc émissaire FMAPI...

signaler à un administrateur
Commentaire de titicar le 18/07/2008 18:26:45

Bah! Pour le skin, on aime ou pas, on retient ou non quelques lignes de prog. De toute façon, elle est indépendante de la fonction concernée.
Perso, ce skin est un petit 'plus'.

VBtoTRASH : Pour quelqu'un qui vient de s'inscrire aujourd'hui même, tu n'es pas très constructif dans tes propos. Tu me laisses sur ma faim car tu n'as pas donné de solution (constructive).
Au fait, n'oublie pas qu'ici, on parle de VB.

signaler à un administrateur
Commentaire de VBtoTRASH le 18/07/2008 18:59:20

Non, la dll manquante est FM20.dll ... pas FMAPI.dll!
Cà existe cette dll ?
Et je ne vois pas ce que ce BOUC EMISSAIRE vient faire ici!
Bon!
Pour accélérer ta recherche, tu crées une classe de recherche avec 1 seul paramétrage possible, tu ouvres sur ta feuille une Collection, et tu lances ta collection de recherche. C'est très rapide!
Dans la classe, tu place une routine récursive SIMPLE avec le DIR classique, planifié avec une DirListBox.

Rapidité : 5 secondes pour trouver 10000 fichiers d'un disque dur de 1/2 To via USB2.0.
Avec SATI ... je pense, moins d'une seconde.

A toi de voir : Beau ou efficace, à toi de voir

signaler à un administrateur
Commentaire de PCPT le 18/07/2008 19:17:17 administrateur CS

FM20.dll (composants Form2.0) permet d'afficher les caractères unicode

aucun intérêt d'utiliser une DirListBox puisque le but est de ne pas passer par des composants

aucun intérêt d'utiliser le DIR classique puisqu'il ne traite pas l'unicode

aucun intérêt de tester la rapidité d'une boucle sans filtre puisque ce n'est pas le but de la source.

donc rien de constructif, fausses infos, faux tests.

tu vois, même en te laissant un droit de réponse (et donc de rester), tu ne sais pas en profiter utilement FMAPI....
tanpis, y'a des cas comme çà où la raison ne l'emportera jamais

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Supprimer des sous répertoires [ par JCLK ] Je sais comment lister le contenu des fichiers d'un répertoire avec "Dir", mais je me demande comment lister les sous-répertoires de ce même fichier.J Lister les propriétes d'une class [ par neojeff ] Bonjour, voilà j'aurrais besoins de lister toutes les propriétes d'une class, possible ou pas ??   Dans l'attente de vous lire, cordialement Jean-fran Lister et utiliser des fichiers Font (True & Opentype) ne se trouvant pas dans le répertoire "C:\Windows\Font\" ... [ par Emoutheos ] Bonjour,Voilà, je travaille en VB pour mon propre plaisir et me retrouve bloqué dans l'une de mes applications...Explications : Une amie graphiste m'a Redirection en VB [ par promiage123 ] Bonjourje voudrai savoir comment faire pour executer une application depuis VB et redireger le reseltat fournit dans un fichier :exemple : executer   Construction Object Class Problème [ par Myke ] Voici j'aimerais savoir si j'utilise la bonne technique.J'ai deux class comme suitPublic class UserPrivate _ListAutorisation As< ComClass [ par vbnino ] Salut! -J'ai crée une classe pour VB6 avec VB.net voila avec VB.net:&lt;ComClass(ComClass1.ClassId, ComClass1.InterfaceId, ComClass1.EventsId)&gt; _Pu ToolTips [ par vbnino ] Salut! -J'ai ce code la avec VB.net:  &lt;ComClass(ComClass1.ClassId, ComClass1.InterfaceId, ComClass1.EventsId)&gt; _ Public Class ComClass1    &lt;M imports system [ par vbnino ] Salut! -Comment on peux ajouter une class dans la class system à savoir par exemple ma class se nomme "blabla"et donc faire: dim z as system.blabla-Me Remplacer la class Graphics ou le gdi32 [ par yvesyves ] Bonjour,Je cherche un petit moteur graphique un peu comme Graphics de .NET mais avec de meilleures performances, des fonctions un chouia plus évoluées DIR et les autorisations [ par andrebernard ] Bonjour à tousJ'utilise DIR depuis des années pour savoir si un fichier existe.Seulement voila, je travaille actuellement sur des machines possedant d


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 1,061 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.