Treeview et fonction recursive pour explorateur FTP

cs_halbi Messages postés 17 Date d'inscription mardi 9 octobre 2007 Statut Membre Dernière intervention 30 janvier 2013 - 20 mai 2008 à 11:09
cs_halbi Messages postés 17 Date d'inscription mardi 9 octobre 2007 Statut Membre Dernière intervention 30 janvier 2013 - 20 mai 2008 à 12:06
Bonjour les gens,

J'expose mon problème :
Je cherche à reproduire un explorer ftp à l'aide d'un treeview, j'utilise une fonction recursive nommée "lister_noeud" que j'appel lorsqu'un noeud est detecté.
Cette fonction à l'air de fonctionner, le seul hic est que le prog ne m'affiche que les derniers enfants de chaque parents

Voila ce que j'aimerais :
Parent 1

---enfant 1.1
---enfant 1.2

Parent 2

---enfant  2.1
---enfant 2.2              
                etc ...

Mais pour l'instant je n'ait que cela :

Parent 1

--enfant 1.2

Parent 2

--enfant 2.2
                 etc...et cela pour chaque sous-rep, parfois j'ai même plusieurs fois le même enfant, sinon pas de problème pour les parents.

je ne m'en sors pas, HELP

4 réponses

lillith212 Messages postés 1229 Date d'inscription vendredi 16 novembre 2007 Statut Membre Dernière intervention 16 juin 2009
20 mai 2008 à 11:15
Salut,

Pourrais tu mettre ton code pour que l'on puisse voir?

slb.

---------------------------------------------------------------
Il faut beaucoup donner pour recevoir un tout petit peu...
---------------------------------------------------------------
0
cs_halbi Messages postés 17 Date d'inscription mardi 9 octobre 2007 Statut Membre Dernière intervention 30 janvier 2013
20 mai 2008 à 11:37
Pas de problème, voila le code, developpé avec VS 2008 :
Il doit paraitre bordelique pour vous, mais je suis encors debutant, veuillez m'excuser

Function Lister_Noeud(ByVal NomRep As String, ByRef Noeud As Windows.Forms.TreeNode, ByVal Wi As Int32) As Boolean                                                         'Voila la fonction recursive

        Dim listbox As New Windows.Forms.ListBox

        ftpcd(NomRep, axinet1)                                      'ces fonctions viennent d'une autre feuille et me servent
        ftpdir(listbox, axinet1)                                          'a lister le contenu du ftp
        Dim wrep As String
        Dim wnoeud As New Windows.Forms.TreeNode

        Wi = 0
        For Wi = 0 To listbox.Items.Count - 1                           'pour wi de 0 au nombre d'elements de la listbox            wrep listbox.GetItemText(listbox.Items(Wi))               'wrep elements de la listbox
            wnoeud.ImageIndex = 0
            wnoeud.SelectedImageIndex = 0            wnoeud.Text wrep                                          'texte du noeud contenu de wrep
          
            If InStr(wrep, "/") > 0 Then                                'si wrep comporte au moins un "/"
                Lister_Noeud(wrep, wnoeud, Wi)                        
            Else
                ftpcd("..", axinet1)                                     'sinon, on remonte d'un niveau
            End If
            Noeud.Nodes.Add(wnoeud)
        Next
    End Function

    Private Sub Menu_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load                                                                                      

        Dim i As New Integer
        Dim Nom_Rep As String
        Dim lstb As New System.Windows.Forms.ListBox                    'listbox virtuelle

        If ftpopen("
192.168.1.1
", "user", "pass", axinet1) = True Then 'ouverture connection ftp
            ftpdir(lstb, axinet1)                                                                                    'dir dans la lstb
            axinet1.Cancel()
            i = 0
            For i = 0 To lstb.Items.Count - 1                         
                ftpopen("192.168.1.1", "user", "pass", axinet1)    'connection ftp
                Nom_Rep = lstb.GetItemText(lstb.Items(i))              
                Dim noeud As New Windows.Forms.TreeNode
                noeud.ImageIndex = 0
                noeud.SelectedImageIndex = 0
                noeud.Text = Nom_Rep                                  
                If InStr(Nom_Rep, "/") > 0 Then                         'si dans nom_rep il y a un "/" alors
                    Lister_Noeud(Nom_Rep, noeud, i)                    
                End If
                TreeV_MAJ.Nodes.Add(noeud)                              'ajout du noeud
                axinet1.Cancel()
            Next
        Else
            MsgBox("non connecté au ftp")                              
        End If
    End Sub
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
20 mai 2008 à 11:46
ca risque d'être long...

liste les dossiers, leurs enfants, a la limite, mais pas recursif jusqu'au bout.
développe au fur et a mesure, quand l'user developpe telle ou telle branche.
0
cs_halbi Messages postés 17 Date d'inscription mardi 9 octobre 2007 Statut Membre Dernière intervention 30 janvier 2013
20 mai 2008 à 12:06
Merci pour votre réponse rapide,
Vous n'auriez pas un bout de code à me proposer parce que j'ai beau chercher sur le site je ne trouve rien, ou alors des explorateur style windows, ce qui ne m'interesse pas.
Je bloque vraiment la, je dois manquer de connaissances

Merci d'avance
0
Rejoignez-nous