Au secours besoin d'un pro pour un dépassement de capacité !!! [Résolu]

Signaler
Messages postés
344
Date d'inscription
mercredi 24 janvier 2007
Statut
Membre
Dernière intervention
27 octobre 2008
-
Messages postés
344
Date d'inscription
mercredi 24 janvier 2007
Statut
Membre
Dernière intervention
27 octobre 2008
-
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

Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
37
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
Messages postés
344
Date d'inscription
mercredi 24 janvier 2007
Statut
Membre
Dernière intervention
27 octobre 2008

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
Messages postés
344
Date d'inscription
mercredi 24 janvier 2007
Statut
Membre
Dernière intervention
27 octobre 2008

Je n'arrive pas à mettre mon code en couleur !!!
J'utilise ce site : http://tools.codes-sources.com/colorizeCode.aspx
Messages postés
3172
Date d'inscription
dimanche 15 février 2004
Statut
Membre
Dernière intervention
9 avril 2017
30
Salut,

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

__________
  Kenji
Messages postés
344
Date d'inscription
mercredi 24 janvier 2007
Statut
Membre
Dernière intervention
27 octobre 2008

Ok Merci