begin process at 2012 02 17 08:32:25
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Modules

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

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


 Information sur la source

Note :
9 / 10 - par 3 personnes
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
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é :5 097 / 457

Auteur : PCPT

Ecrire un message privé
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (13)
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

Les Membres Club peuvent 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

 Sources du même auteur

Source avec Zip Source .NET (Dotnet) [VB2008] OBSERVER L'ACTIVITÉ INPUT (CLAVIER SOURIS) DE L'UTI...
Source avec Zip Source avec une capture PUBLIC SHARED SANS MODULE - VARIABLE SINGLETON : IDENTIFICAT...
Source avec Zip Source avec une capture RÉCUPÉRATION DES IMAGES SYSTÈME DEPUIS LEUR EXTENSION OU LEU...
Source avec Zip Source avec une capture FILE FOLDER LOCKER - BLOQUER (ET DÉBLOQUER) L'ACCÈS À CERTAI...
Source avec Zip Source avec une capture FOLDER HELPER - DOSSIERS SPECIAUX, MANIPULATION DE DOSSIERS,...

 Sources de la même categorie

Source avec Zip Source .NET (Dotnet) CRYPTAGE ET DECRYPTAGE par jerichez
Source avec Zip Source avec une capture Source .NET (Dotnet) EXEMPLE MODBUS POUR MODULES ADAM, BECKHOFF, WAGO par mnmsjaune
Source avec Zip Source .NET (Dotnet) CRÉER SON PROPRE DESIGNER COMME CELUI DE VISUAL STUDIO par ShareVB
Source avec Zip Source .NET (Dotnet) CONVERSION UTM VERS LAT/LONG par BarresLTD
Source avec Zip CPROPGROUP : COLLECTION FAITE MAISON par Flocreate

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture ADDIN HELPER - CRÉEZ VOS PROPRES ADDIN POUR VB6 [MODULES DE ... par PCPT
Source avec Zip Source avec une capture CONVERTIR DU CODE HTML TEXTE AU FORMAT HTML (EN VB6 ET VBA) ... par PCPT
DIRLISTING - LISTER UN DOSSIER ET SES SOUS DOSSIERS TRES RAP... par santiago69
Source avec Zip Source avec une capture LISTEZ VOS FICHIER FACILEMENT ET RAPIDEMENT par Renfield
Source avec Zip Source avec une capture WMI HELPER - TOUTES LES CLASSES WIN32 [AIDE-MÉMO] par PCPT

Commentaires et avis

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
@++

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 ;)

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)

++ ;)

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

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

Bien

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 ^^)

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.

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!

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...

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.

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

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

Commentaire de gnomish le 30/01/2010 00:47:50 7/10

Cela date un peu, mais tout à fait ce que je cherchais, cependant en version unicode il me retourne un caractère en moins en fin de fichier. En traçant le programme, je crois que la fonction TrimRNullW enlève un vbNull de trop à droite, et devrait s'écrire TrimRNullW = Left$(sString, InStr(sString, vbNullChar & vbNullChar))
Du coup certains tests sont faux dans DirPlusW, car ils ajoutaient le vbNull enlevé selon qu'il s'agissait d'un répertoire ou fichier...
    .FileOrFolder = .FileOrFolder & vbNullChar & "\" & vbNullChar
et plus loin
    sTempPath = sTempPath & vbNullChar & "\" & vbNullChar
Les deux tests  deviennent ainsi inutiles, il suffit de ne laisser qu'une ligne et d'enlever le vbNullChar avant le "\" pour avoir :
    If (tWFD.dwFileAttributes And FILE_ATTRIBUTE_DIRECTORY) = FILE_ATTRIBUTE_DIRECTORY Then
        ' c'est un dossier
        .FileOrFolder = .FileOrFolder & "\" & vbNullChar
        .IsDirectory = True
    End If

et plus loin

        If (tWFD.dwFileAttributes And FILE_ATTRIBUTE_DIRECTORY) = FILE_ATTRIBUTE_DIRECTORY Then
            ' extraction nom dossier en évitant les "." et ".."
            sTempPath = TrimRNullW(tWFD.cFileName)
            If IsValidDirPlusW(sTempPath) Then
                ' récursivité, mais on peut très bien avoir un dossier vide
                sTempPath = sTempPath & "\" & vbNullChar


Et pour IsValidDirPlusW il faudrait plutôt écrire :
    IsValidDirPlusW = ((sString <> StrConv(".", vbUnicode))) And (sString <> StrConv("..", vbUnicode))
(enfin, en utilisant des constantes ce serait mieux pour éviter les appels de StrConv à chaque fois)

En faisant cela, tout rentre dans l'ordre et unicode ou pas la classe marche à merveille (je n'ai pas testé le module).
Sans quoi je trouve le code très utile car il permet de se passer des composants.

 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

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), 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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,607 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales