IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

parcours récursif de dossiers selon un niveau un niveau de profondeur


Sujet :

VB 6 et antérieur

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 15
    Points : 7
    Points
    7
    Par défaut parcours récursif de dossiers selon un niveau un niveau de profondeur
    Bonjour a touse voila le but de mon code est de parcourir des dossiers et sous dossiers afin d'en afficher le contenue dans une listbox.
    Je m'explique j'ai un dossier
    data qui contient lui des dossier A, B , C , D , E ect...
    et ensuite dans cest dossier sont stockée des nom de famille.
    Je suis arrivé a pondre ce code met quand je clilc sur mon bouton
    le debug me dit Nombres d'argument incorect ou affectation de propriété incorect.
    pouvez vous me corriger mon code svp . Merci d'avance et bonne soirée

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    Dim niveau_actuel As Integer
     
     
    Sub parcours(chemin As String, niveau As Integer)
    Dim i As Integer
    Dim n As Integer
    Dim s As String
    Dim t() As String
     
    If niveau_actuel > 2 Then Exit Sub
    If Right(chemin, 1) <> "\" Then chemin = chemin + "\"
    s = Dir(chemin + "*.*", vbDirectory)
    While s <> ""
    If s <> "." And s <> ".." And GetAttr(chemin + s, vbDirectory) = vbDirectory Then
     
        n = n + 1
        ReDim Preserve t(n)
        t(n) = chemin + s
        List1.AddItem s
        End If
        s = Dir
        Wend
     
     
        i = 1
        niveau_actuel = niveau_actuel + 1
        While i <= n
            DoEvents
            parcours t(i), 2
            i = i + i
            Wend
            niveau_actuel = niveau_actuel - 1
     
    End Sub
     
    Private Sub Command1_Click()
    niveau_actuel = 1
    parcours "C:\windows\temp trinity\CLIENT\data\", 1
     
    End Sub

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 15
    Points : 7
    Points
    7
    Par défaut
    personne ne peux me donner un ptit coup de pouce

  3. #3
    Membre habitué Avatar de BertrandA
    Inscrit en
    Août 2003
    Messages
    170
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 170
    Points : 197
    Points
    197
    Par défaut
    C'est assez limpide, l'interpréteur signale une erreur sur cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    GetAttr(chemin + s, vbDirectory)
    Et le prototype de cette fonction est le suivant, avec un seul argument :
    Je n'ai pas regardé le reste du code en détail.

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 15
    Points : 7
    Points
    7
    Par défaut
    D'accord je peut etre un erreur de ma part je vais regardé ca de plus près.Merci pour ta réponce.
    Sinon quelqu'un peut-il valider mon code svp.

  5. #5
    Membre éclairé
    Avatar de Catbull
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    542
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 542
    Points : 854
    Points
    854
    Par défaut
    J'ai un doute sur la réussite de ton code. La fonction Dir ne peut pas être employée de manière récursive.

    Voici un Extrait de msdn :

    Citation Envoyé par msdn
    La fonction Dir renvoie le premier nom de fichier correspondant à l'argument pathname. Pour extraire d'autres noms de fichier correspondant à l'argument pathname, appelez de nouveau la fonction Dir sans préciser d'arguments. Quand tous les fichiers ont été indiqués, la fonction Dir renvoie une chaîne de longueur nulle (""). Lorsqu'une chaîne de longueur nulle a été renvoyée, vous devez indiquer l'argument pathname dans les appels ultérieurs de la fonction ou une erreur se produit. Vous pouvez indiquer un nouvel argument pathname sans avoir extrait tous les noms de fichier correspondant à l'argument pathname courant. Il est cependant impossible d'appeler la fonction Dir de manière récursive. Les appels Dir comportant l'attribut vbDirectory ne renvoient pas continuellement les sous-dossiers.
    Utile l'objet FileSystemObject. Il est très facile de mettre en oeuvre la récursivité afin de parcourir l'arborescence d'un répertoire. Il y a des exemple sur le forum. Bonne recherche

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 15
    Points : 7
    Points
    7
    Par défaut
    Ok merci , apres correction de mon code , j'arrive a affichier mon dossier et mes sous dossier , comment faire pour affiché juste mes sous dossiers?
    Mon code actuel est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
    Dim niveau_actuel As Integer
     
     
    Sub parcours(chemin As String, niveau As Integer)
    Dim i As Integer
    Dim n As Integer
    Dim s As String
    Dim t() As String
    n = 0
    i = 0
     
    If niveau_actuel > 2 Then Exit Sub
    If Right(chemin, 1) <> "\" Then chemin = chemin + "\"
    s = Dir(chemin + "*.*", vbDirectory)
    While s <> ""
    If s <> "." And s <> ".." And GetAttr(chemin + s) = vbDirectory Then
     
        n = n + 1
        ReDim Preserve t(n)
        t(n) = chemin + s
        List1.AddItem s
        End If
        s = Dir
        Wend
     
     
        i = 1
        niveau_actuel = niveau_actuel + 1
        While i <= n
            DoEvents
            parcours t(i), 1
            i = i + i
            Wend
            niveau_actuel = niveau_actuel - 1
     
    End Sub
     
    Private Sub Command1_Click()
    niveau_actuel = 1
    parcours "C:\windows\temp trinity\CLIENT\data\", 2
     
    End Sub

  7. #7
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    Tu en connais le chemin par construction, non ?
    Il te suffit alors de ne pas afficher si tu n'as que ce chemin lors de la lecture dans ta boucle.

Discussions similaires

  1. Parcours récursif d'arborescence
    Par syl2095 dans le forum Linux
    Réponses: 10
    Dernier message: 12/12/2006, 16h09
  2. [2003 Server] Lenteur d'exploration des dossiers selon le type d'accès
    Par Bob Langlade dans le forum Windows Serveur
    Réponses: 7
    Dernier message: 20/10/2006, 18h30
  3. Parcours d'un fichier selon plusieurs crièteres
    Par RR instinct dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 21/07/2006, 16h25
  4. problème sur le parcours d'un dossier
    Par cyrill.gremaud dans le forum Langage
    Réponses: 16
    Dernier message: 04/05/2006, 15h17
  5. Supprimer des sous-dossiers selon des critères
    Par Dertron dans le forum Autres Logiciels
    Réponses: 2
    Dernier message: 18/01/2006, 15h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo