Remplacer dir par une classe dir2 (avantages)

Soyez le premier à donner votre avis sur cette source.

Vue 5 920 fois - Téléchargée 778 fois

Description

(Voir l'entête de la classe où tout est expliqué)
La commande DIR, interne à VB, est pratique mais elle a deux inconvénients majeurs :
- Dans une même boucle, on ne peut pas faire 2 recherches par DIR en même temps
- La recherche des répertoires (vbDirectory) renvoie aussi les fichiers sans attribut

Cette classe DIR2 permet de faire des recherches avec la même technique que le DIR standard, mais :
- Elle doit être déclarée pour l'utiliser --> personnalisation des paramètres qui ne sont pas perturbés par d'autres recherche
- Elle renvoie uniquement les types de fichier/répertoire désirés

Cette classe utilise les APIs classiques du Kernel et ne nécessite aucune DLL ou OCX annexe.
J'ai soigné les commentaires et les explicatifs.

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
76
lol, c'est gentil, mais à mon age la gloire n'est qu'une chimère, fermez les guillemets.
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
posté ici :
http://www.vbfrance.com/code.aspx?ID=43640

simples modifs a al base, j'ai fais de grands changement, ce qui explique que j'ai posté une toute nouvelle.
J'ai mentionné partout ton nom, Jack
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
Asimengo> pas pigé ta remarque, dans le fond...
EOF fait plus que de tester la longueur de la chaine, elle appelle la propriete Item.

ce faisant, elle tente de se caler sur un élément valide.

le fait que dans l'initialize on ne se positionne pas directement sur un élement valide n'est pas, je pense, un soucis, puisque lorsque l'utilisateur appellera Item, ca se callera tout seul.

a noter qu'il faudrait mieux faire d'ailleurs :
Public Function Item() As String
Dim nLength As Long
If mHandle Then
Do
nLength = InStr(aFileStructure.cFileName, vbNullChar)
If nLength Then
Item = Left$(aFileStructure.cFileName, nLength - 1)

If Item ".." Or Item "." Or CBool(aFileStructure.dwFileAttributes And mRechercheQuoi) = False Then
MoveNext
Else
Exit Do
End If
End If
Loop
End If
End Function


comme ça, on supprime la recursivité, la chose est accelerée
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
76
(ouh, on est studieux, ici)
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
le premier item est ramené dans le Initialize
on ne peux pas faire de MoveNext ici.

pour ce qui est de la coherence, ca me semble ok
Afficher les 21 commentaires

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.