Tutorial de la fonction dir / un répertoire est-il vraiment vide ?

Soyez le premier à donner votre avis sur cette source.

Snippet vu 4 181 fois - Téléchargée 27 fois

Contenu du snippet

Si vous lancez la fonction 'dir' pour la première fois, vous vous apercevrez q'avec l'attribut VbDirectory, elle renvoie toujours '.' mêm si le répertoire est vide.

Vous passez alors pas la taille du répertoire ?
s'il contient seulement des sous-répertoires et pas de fichiers, ben sa taille est zéro.

V'la comment se sortir de tout ça avec une simple fonction dir bien appliquée

Source / Exemple :


dim info_rep_vide as string
dim yapasdefichier as boolean
' monbeaurepertoire est le répertoire dont ont veut les infos
' toujours vérifier la présence du "\" final
' vb renvoie x:\ si c'est la racine et le met x:\temp sans le "\" final ailleurs

if Right(monbeaurepertoire, 1) <> "\" then
	monbeaurepertoireavecson\final=monbeaurepertoire+"\"
endif

if Dir(monbeaurepertoireavecson\final+ "*.*", vbNormal+vbhidden+vbsytem+vbReadOnly) = "" then
	' il faut metre vbnormal+vbhidden+vbsytem+vbReadOnly pour être sure
	' c'est 0+1+2+4 = 7 tout simplement
	msgbox("répertoire sans fichier ")
	yapasdefichier=true
else
	msgbox("répertoire avec fichier(s)")
	yapasdefichier=false
endif

' simplification direct pour les répertoires, pour compter aussi les repertoire cachés et autres, c'est 16+4+2+1+0=23
info_rep_vide = Dir(monbeaurepertoireavecson\final + "*.*", 23) ' vaut toujours "."
info_rep_vide = Dir ' vaut toujours".."
info_rep_vide = Dir ' vaut "" si pas de rép et sinon,le nom du premier rep sinon
' attention, si le répertoire est vide, on peut pas le faire une fois de plus
if info_rep_vide=""
	msgbox("répertoire sans sous-répertoire")
else
	msgbox("répertoire contenant au moins un sous répertoire")
endif

if info_rep_vide="" and yapasdefichier then
	msgbox("y a ni fichier ni répertoire(caché ou autre), c'est vide")
endif

Conclusion :


Le code a été écrit directement dans le bloc note, peut y avoir une erreure, mais une fois qu'on a compris le principe, c'est comme le vélo, ça s'oublie pas.

A voir également

Ajouter un commentaire

Commentaires

Messages postés
69
Date d'inscription
jeudi 19 juin 2003
Statut
Membre
Dernière intervention
22 décembre 2019

sur mes bouquins de programmation, pas différence donnée.

quand les chaine représentent des nombres, '+' peut péter à confusion
var1="10", var2="10", var1+var2 vaut 20 ou 1010, avec les conversions automatiques, il serait possible d'avoir 20. Avec le '&', y a pas ce problème.
Perso, j'ai jamais eut de problème avec le '+' et je le préfère, question de goùt.

En C, c'est autre chose, une chaine est toujours désignée par son pointeur et ajouter deux pointeurs n'a jamais concaténé deux chaines.
Messages postés
89
Date d'inscription
samedi 19 avril 2003
Statut
Membre
Dernière intervention
26 janvier 2008

c koi la difference entre + et & (pour concaténer des chaines) ?? la rapidité d'exécution ?
Utilisateur anonyme
I a pas besion d'etre agressif pour autant.
Messages postés
69
Date d'inscription
jeudi 19 juin 2003
Statut
Membre
Dernière intervention
22 décembre 2019

on est en basic, le but est pas de se prendre la tête et le "+" marche très bien sur les variables string.

les *truc.chose = truc->chose du C++, je m'en passe
Utilisateur anonyme
Ben sans vouloir te vexer, c cool de faire un tuto, mais faudrai dj savoir comment concatener des string. Voila un exemple de ce que tu as mis :

monbeaurepertoireavecsonfinal=monbeaurepertoire+""
endif

Faut remplacer ton + par un &

Par exmple :

ma_variable = "Je suis " &var &" beau"

++

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.