Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1383 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Fonction recursive, Help

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Fonction recursive, Help

n°1563547
Z_cool
HFR profile rating:⭐⭐⭐⭐
Posté le 22-05-2007 à 15:47:19  profilanswer
 

Salut,

 

encore moi. je dois modifier une fonction recursive, mais la je galeres (j ai jamais aimé la recursivité)

 


en gros,  voila la fonction :

 
Code :
  1. Private Function GetSubMembers(GroupObject, CurrentISAPath)
  2.     Dim TmpMember ' as IADs
  3.     For Each TmpMember In GroupObject.Members
  4.        
  5.         If LCase(TmpMember.Class) = "group" Then
  6.             'Status
  7.                If DebugMode = TRUE Then Call Message ("Found group: '" & TmpMember.ADsPath & "'" & chr(10) & chr(13) & "   in group: '" & GroupObject.ADsPath & "'. Analysing..." )
  8.             Call GetSubMembers(TmpMember, CurrentISAPath)
  9.         Else
  10.             AddEntry CurrentISAPath, TmpMember.ADsPath, GroupObject.ADsPath
  11.         End If
  12.     Next
  13. End Function 'GetSubMembers(GroupObject, CurrentISAPath)

elle marche bien

 

Mon probleme c est que des fois, j ai GroupeObject qui pointe vers le group (appelons le:) "Toto"

 

Le groupe "Toto" contient le group "Tata"
Le groupe "Tata" contient le group "Toto"

 

Et la c est le drame, ca sort jamais.
J'ai essayé de mettre le nom du groupe dans un Dictionnary et tester avant le "Call GetSubMembers" de savoir si ce groupe avaitr deja été testé,.. mais ca marche pas, je dois mal m'y prendre...

 

si quelqu un a une idee ?

 

Merci d'avance

 

mood
Publicité
Posté le 22-05-2007 à 15:47:19  profilanswer
 

n°1563750
jpcheck
Pioupiou
Posté le 22-05-2007 à 23:20:05  profilanswer
 

si toto contient tata et vice versa, tu dois pas faire du récursive c'est tout ;)

n°1563777
Paul Hood
Posté le 23-05-2007 à 08:38:33  profilanswer
 

Ou alors tu testes que chaque groupe n'a pa déjà été traité avant d'appeler en récursif.

n°1563840
Z_cool
HFR profile rating:⭐⭐⭐⭐
Posté le 23-05-2007 à 11:13:54  profilanswer
 

jpcheck a écrit :

si toto contient tata et vice versa, tu dois pas faire du récursive c'est tout  ;)


Que Toto contient Tata, c est normal, le probleme c est quand Tata contient Toto, et ca, je vois pas comment le savoir quand je suis dans cette fonction.

n°1563850
Z_cool
HFR profile rating:⭐⭐⭐⭐
Posté le 23-05-2007 à 11:23:48  profilanswer
 

Paul Hood a écrit :

Ou alors tu testes que chaque groupe n'a pa déjà été traité avant d'appeler en récursif.


Oui, c est ce que je voulais faire,, un truc du genre :

Code :
  1. Dim Catalogue
  2. set Catalogue =CreateObject (scripting.Dictionary)
  3. Private Function GetSubMembers(GroupObject, CurrentISAPath)
  4.     Dim TmpMember ' as IADs
  5.     Dim groupe_Name
  6.     For Each TmpMember In GroupObject.Members
  7.         If LCase(TmpMember.Class) = "group" Then
  8.           groupe_Name = 'Le nom NetBios du groupe que je detaille pas ici 
  9.             if NOT Catalogue.exist(groupe_Name) then
  10.             'Status
  11.             If DebugMode = TRUE Then Call Message ("Found group: '" & TmpMember.ADsPath & "'" & chr(10) & chr(13) & "   in group: '" & GroupObject.ADsPath & "'. Analysing..." )
  12.             Call GetSubMembers(TmpMember, CurrentISAPath)
  13.               Catalogue.add groupe_Name, 1
  14.             end if
  15.         Else
  16.             AddEntry CurrentISAPath, TmpMember.ADsPath, GroupObject.ADsPath
  17.         End If
  18.     Next
  19. End Function 'GetSubMembers(GroupObject, CurrentISAPath)


mais je comprend pas pourquoi, ca marche pas ...

n°1563853
jpcheck
Pioupiou
Posté le 23-05-2007 à 11:26:25  profilanswer
 

il faut mettre ton flag "deja traité" avantr de lancer de nouveau la fonction, sinon tu reste bloqué dans la boucle...


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Fonction recursive, Help

 

Sujets relatifs
Help problème debogage avec mon jeu vbaMAJ les valeurs retournées par une fonction
quel est la fonction fopen en C# ?Probleme de message d'erreur sur une fonction SNMP
(EXCEL) Somme en fonction du format ou de la policeComment sortir d'une fonction en renvoyant un message d'erreur
fonction qui retourne plusieurs variablesHelp Programmation division binaire C
[C] Programmation fonction recup Bits port SérieFonction absente d'une dll après compilation réussie
Plus de sujets relatifs à : Fonction recursive, Help


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR