Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

DIR comment ça marche ???

4 réponses
Avatar
X
Bonjour,

Avec DIR dans le rep courant, y a des choses que je ne comprends pas, si
quelqu'un sait ???

Je fais:
Dim ligne As String
List2.Clear
ligne = Dir("*_bp.txt")
Do While ligne <> ""
DoEvents
ligne = Dir()
List2.AddItem ligne
Loop

Il n'y a qu'un fichier "*_bp.txt" (pour le moment), mais ma liste2 affiche
0=blanc, 1=nom du fichier, pourquoi ???

Si je fais:
Do While ligne <> ""
DoEvents
ligne = Dir(*_bp.txt")
List2.AddItem ligne
Loop

Ça ne marche pas, pourquoi ???

Pourquoi faut-il envoyer d'abord le dire avec le nom du fichier, puis
ensuite en Do-loop un dir vide pour avoir tous les fichier???

Pourquoi ma liste affiche un première ligne vierge ???

Y a-t-il 'autres façons, et comment à ça marche, car je dois avouer que je
ne comprends pas tout, et pourtant je connais Dos???

--
Merci beaucoup, au revoir et à bientôt :o)
------
Site logiciels
http://irolog.free.fr
Mail
http://irolog.free.fr/ecrire/index.htm
Site perso
http://irolog.free.fr/joe/index.htm
Principe d'utilisation des news Groups
http://support.microsoft.com/directory/worldwide/fr/newsgroup/regles.htm
------------------------------------------------------------------------------------

4 réponses

Avatar
Patrick Philippot
Bonjour,

Reprenez la documentation de Dir.

Le premier appel sert à définir les critère de recherche. Les appels sans
argument servent à récupérer l'élément suivant.

Dans le premier exemple, vous appelez Dir() sans avoir exploité le premier
élément trouvé qui est donc perdu (jamais affiché dans la listbox). Par
contre, vous ajoutez le contenu de ligne même si celui-ci est vide sur la
dernière boucle. Il y a donc une entrée vide.

Dans le deuxième exemple, je ne sais pas ce que vous obtenez (ça ne marche
pas - le répètera-t-on assez souvent - n'est pas une indication utile; si ça
marchait, vous ne poseriez pas de question :-)) ) mais effectivement, vous
commettez 2 erreurrs:

- Il faut appeler Dir avec les paramètres initiaux *avant* d'entrer dans la
boucle.
- Il faut appeler Dir() à chaque passe.

Le code correct est :

ligne = Dir("*_bp.txt")
Do While ligne <> ""
DoEvents
List2.AddItem ligne
ligne = Dir()
Loop

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr


"X" wrote in message news:%
Bonjour,

Avec DIR dans le rep courant, y a des choses que je ne comprends pas,
si quelqu'un sait ???

Je fais:
Dim ligne As String
List2.Clear
ligne = Dir("*_bp.txt")
Do While ligne <> ""
DoEvents
ligne = Dir()
List2.AddItem ligne
Loop

Il n'y a qu'un fichier "*_bp.txt" (pour le moment), mais ma liste2 affiche
0=blanc, 1=nom du fichier, pourquoi ???

Si je fais:
Do While ligne <> ""
DoEvents
ligne = Dir(*_bp.txt")
List2.AddItem ligne
Loop

Ça ne marche pas, pourquoi ???


Avatar
X
Bonjour,

Je te remercie...
Ok, tu m'expliqueq ce qui se passe, mais ça j'avais compris, c'est le
pourquoi???
Le pourquoi d'une ligne vierge et d'une syntaxe différente pour une même
opération, c'est ça que je voudrais comprendre, et aussi si on peut faire
autrement ???

Car par exemple, avec la liste c'est pas terrible, programmation
"agricole" comme dirait quelqu'un de ma connaissance, je suis obligé de
tester si liste > 1 = liste.remoitem 0, ça fait bricolage...

--
Merci beaucoup, au revoir et à bientôt :o)
------
Site logiciels
http://irolog.free.fr
Mail
http://irolog.free.fr/ecrire/index.htm
Site perso
http://irolog.free.fr/joe/index.htm
Principe d'utilisation des news Groups
http://support.microsoft.com/directory/worldwide/fr/newsgroup/regles.htm
------------------------------------------------------------------------------------
"Patrick Philippot" a écrit dans le
message de news: OqVXB%
Bonjour,

Reprenez la documentation de Dir.

Le premier appel sert à définir les critère de recherche. Les appels sans
argument servent à récupérer l'élément suivant.

Dans le premier exemple, vous appelez Dir() sans avoir exploité le premier
élément trouvé qui est donc perdu (jamais affiché dans la listbox). Par
contre, vous ajoutez le contenu de ligne même si celui-ci est vide sur la
dernière boucle. Il y a donc une entrée vide.

Dans le deuxième exemple, je ne sais pas ce que vous obtenez (ça ne marche
pas - le répètera-t-on assez souvent - n'est pas une indication utile; si
ça marchait, vous ne poseriez pas de question :-)) ) mais effectivement,
vous commettez 2 erreurrs:

- Il faut appeler Dir avec les paramètres initiaux *avant* d'entrer dans
la boucle.
- Il faut appeler Dir() à chaque passe.

Le code correct est :

ligne = Dir("*_bp.txt")
Do While ligne <> ""
DoEvents
List2.AddItem ligne
ligne = Dir()
Loop

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr


"X" wrote in message
news:%
Bonjour,

Avec DIR dans le rep courant, y a des choses que je ne comprends pas,
si quelqu'un sait ???

Je fais:
Dim ligne As String
List2.Clear
ligne = Dir("*_bp.txt")
Do While ligne <> ""
DoEvents
ligne = Dir()
List2.AddItem ligne
Loop

Il n'y a qu'un fichier "*_bp.txt" (pour le moment), mais ma liste2
affiche 0=blanc, 1=nom du fichier, pourquoi ???

Si je fais:
Do While ligne <> ""
DoEvents
ligne = Dir(*_bp.txt")
List2.AddItem ligne
Loop

Ça ne marche pas, pourquoi ???






Avatar
Patrick Philippot
Re,

Le pourquoi d'une ligne vierge



ligne = Dir("*_bp.txt")
'ligne contient le premier élément trouvé

Do While ligne <> ""
'ligne n'est pas vide

DoEvents

ligne = Dir()
' Cet appel fait perdre le premier élément
'qui se trouvait dans la ligne et qui n'a pas encore
'été affiché.
' ligne contient maintenant le prochain élément
' ou bien ligne est vide s'il n'y a plus d'éléments

List2.AddItem ligne
'Une entrée est créée dans la listbox, avec le
' contenu courant de ligne : rien ou l'élément
' juste récupéré - avec cet algorithme il y
'aura *toujours* une entrée vide dans la listbox

Loop

et d'une syntaxe différente pour une même opération, c'est ça que je
voudrais comprendre



Il n'y a pas qu'en VB que certaines fonctions ont un comprotement différent
selon que l'on passe ou non des arguments (voir par exemple le strtok en
C/C++). L'appel initial récupère les arguments de filtrage et l'appel sans
argument récupère les suivants. C'est un classique des mécanismes
d'énumération en programmation non objet. Ce comportement est mappé sur le
fonctionnement des APIs FindFirstFile et FindNextFile qui fonctionnent de
cette manière et qui sont utilisées, de toute évidence, par Dir.

Dir (avec arguments) => FindFirstFile
Dir() => FindNextFile

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr
Avatar
X
merci :o)

--
Merci beaucoup, au revoir et à bientôt :o)
------
Site logiciels
http://irolog.free.fr
Mail
http://irolog.free.fr/ecrire/index.htm
Site perso
http://irolog.free.fr/joe/index.htm
Principe d'utilisation des news Groups
http://support.microsoft.com/directory/worldwide/fr/newsgroup/regles.htm
------------------------------------------------------------------------------------
"Patrick Philippot" a écrit dans le
message de news:
Re,

Le pourquoi d'une ligne vierge



ligne = Dir("*_bp.txt")
'ligne contient le premier élément trouvé

Do While ligne <> ""
'ligne n'est pas vide

DoEvents

ligne = Dir()
' Cet appel fait perdre le premier élément
'qui se trouvait dans la ligne et qui n'a pas encore
'été affiché.
' ligne contient maintenant le prochain élément
' ou bien ligne est vide s'il n'y a plus d'éléments

List2.AddItem ligne
'Une entrée est créée dans la listbox, avec le
' contenu courant de ligne : rien ou l'élément
' juste récupéré - avec cet algorithme il y
'aura *toujours* une entrée vide dans la listbox

Loop

et d'une syntaxe différente pour une même opération, c'est ça que je
voudrais comprendre



Il n'y a pas qu'en VB que certaines fonctions ont un comprotement
différent selon que l'on passe ou non des arguments (voir par exemple le
strtok en C/C++). L'appel initial récupère les arguments de filtrage et
l'appel sans argument récupère les suivants. C'est un classique des
mécanismes d'énumération en programmation non objet. Ce comportement est
mappé sur le fonctionnement des APIs FindFirstFile et FindNextFile qui
fonctionnent de cette manière et qui sont utilisées, de toute évidence,
par Dir.

Dir (avec arguments) => FindFirstFile
Dir() => FindNextFile

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr