Au secours besoin d'un pro pour un dépassement de capacité !!!

Résolu
Marneus73 Messages postés 344 Date d'inscription mercredi 24 janvier 2007 Statut Membre Dernière intervention 27 octobre 2008 - 11 mai 2008 à 17:06
Marneus73 Messages postés 344 Date d'inscription mercredi 24 janvier 2007 Statut Membre Dernière intervention 27 octobre 2008 - 11 mai 2008 à 18:35
Bonjour à tous,
Voila j'ai crée une petite fonction qui doit ajouter dans un TreeView des noms de fichiers suivant leur extension. Mais la génération me retourne une erreure !!! Aidez moi s'il vois plait, c'est super important.
Voila le code correspondant:

Public Sub Organisation(ByVal extension As String, ByVal index_parent As Integer, ByVal index_enfant As Integer)


        Dim liste() As String = System.IO.Directory.GetFiles(My.Settings.Repertoire)
        Dim item As String


        For Each item In liste
            If System.IO.Path.GetExtension(item) = extension Then
                Dim item_ext As TreeNode = TreeView1.Nodes(index_parent).Nodes(index_enfant).Nodes.Add(item)
                item_ext.Name = item
                item_ext.Text = System.IO.Path.GetFileNameWithoutExtension(item)
            End If
        Next


        Dim Sous_Dossiers As String
        Dim Liste_Sous_Dossiers As String() = Directory.GetDirectories(My.Settings.Repertoire)


        For Each Sous_Dossiers In Liste_Sous_Dossiers
            Organisation(Sous_Dossiers, index_parent, index_enfant)
            'MessageBox.Show(Sous_Dossiers.ToString)
        Next


End Sub

Visual Studio me retourne une erreur du type :

Une exception non gérée du type 'System.StackOverflowException' s'est produite dans mscorlib.dll

PS: J'ai besoin d'appeler 14 fois cette fonction car j'ai 14 types de fichiers.

Merci beaucoup d'avance.

5 réponses

cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
11 mai 2008 à 18:00
Le problème est que tu as fait une boucle sans fin avec la réentrance de ta fonction.

Si tu analyse bien ta fonction, lors du premier appel, tu passe en revue chaque fichier d'un répertoire dont tu donne le chemin en dur (My.Settings.Repertoire).

Ensuite pour chacun des sous répertoires de ce dossier, tu réappelle ta fonction (alors que tu n'es pas encore sorti du premier appel) avec l'idée de scanné le sous répertoire, sauf que ta fonction rescanne toujours le répertoire de départ puisqu'il est donné en dur, et ce jusqu'à l'infini ou plutot jusqu'à ce que la pile éclate sous le nombre des appels.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
3
Marneus73 Messages postés 344 Date d'inscription mercredi 24 janvier 2007 Statut Membre Dernière intervention 27 octobre 2008
11 mai 2008 à 17:13
Désolé pour la mise en page:

PublicSub Organisation(ByVal extension AsString, ByVal index_parent AsInteger, ByVal index_enfant AsInteger)

        Dim liste() AsString = System.IO.Directory.GetFiles(My.Settings.Repertoire)

        Dim item AsString

        ForEach item In liste

            If System.IO.Path.GetExtension(item) = extension Then

                Dim item_ext As TreeNode = TreeView1.Nodes(index_parent).Nodes(index_enfant).Nodes.Add(item)

                item_ext.Name = item

                item_ext.Text = System.IO.Path.GetFileNameWithoutExtension(item)

            EndIf

        Next

        Dim Sous_Dossiers AsString

        Dim Liste_Sous_Dossiers AsString() = Directory.GetDirectories(My.Settings.Repertoire)

        ForEach Sous_Dossiers In Liste_Sous_Dossiers

            Organisation(Sous_Dossiers, index_parent, index_enfant)

            'MessageBox.Show(Sous_Dossiers.ToString)

        Next

EndSub
0
Marneus73 Messages postés 344 Date d'inscription mercredi 24 janvier 2007 Statut Membre Dernière intervention 27 octobre 2008
11 mai 2008 à 17:17
Je n'arrive pas à mettre mon code en couleur !!!
J'utilise ce site : http://tools.codes-sources.com/colorizeCode.aspx
0
Utilisateur anonyme
11 mai 2008 à 17:46
Salut,

Sur quel ligne précise et sur quel parti t'indique t-il cette erreur ?

__________
  Kenji
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Marneus73 Messages postés 344 Date d'inscription mercredi 24 janvier 2007 Statut Membre Dernière intervention 27 octobre 2008
11 mai 2008 à 18:35
Ok Merci
0
Rejoignez-nous