problema con recursividad en VB
Publicado por odetualet (4 intervenciones) el 22/08/2006 11:00:21
Buenas, me gustaría a ver si alguien me puede ayudar.
Estoy haciendo un programa para comprobar los permisos de los usuarios en una carpeta (folder) y sus subcarpetas. Para hacerlo estoy usando recursividad. elijo una carpeta raiz y a partir de ahi voy bajando hasta que encuentro una carpeta sin subcarpetas, por lo que ejecuto cacls y subo a la carpeta padre, y así reiteradamente.
En principio es sencillo, pero tengo un problema, si debugo puedo comprobar como entra en todas las carpetas y la ejecución es correcta. Pero si ejecuto el programa del tirón el resultado no es bueno, me salen menos carpetas. Parece como si se saltase pasos.
Esta es la función recursiva
Public Function TratarCarpeta(oCarpeta As Folder) As Boolean
Dim oFolder As Folder
Dim colFolder As Folders
On Error GoTo Error_proc
Set colFolder = oCarpeta.SubFolders
If bRecursivo And colFolder.Count > 0 Then
For Each oFolder In colFolder
Call TratarCarpeta(oFolder)
Next
End If
Call ProcesarCarpeta(oCarpeta)
TratarCarpeta = True
Exit Function
Error_proc:
Err.Raise Err.Number, Err.Description
TratarCarpeta = False
End Function
Como veis no es nada del otro mundo, pero parece que no le gusta mucho esto de la recursividad a esto del VB.
Muchas gracias por vuestra ayuda
Estoy haciendo un programa para comprobar los permisos de los usuarios en una carpeta (folder) y sus subcarpetas. Para hacerlo estoy usando recursividad. elijo una carpeta raiz y a partir de ahi voy bajando hasta que encuentro una carpeta sin subcarpetas, por lo que ejecuto cacls y subo a la carpeta padre, y así reiteradamente.
En principio es sencillo, pero tengo un problema, si debugo puedo comprobar como entra en todas las carpetas y la ejecución es correcta. Pero si ejecuto el programa del tirón el resultado no es bueno, me salen menos carpetas. Parece como si se saltase pasos.
Esta es la función recursiva
Public Function TratarCarpeta(oCarpeta As Folder) As Boolean
Dim oFolder As Folder
Dim colFolder As Folders
On Error GoTo Error_proc
Set colFolder = oCarpeta.SubFolders
If bRecursivo And colFolder.Count > 0 Then
For Each oFolder In colFolder
Call TratarCarpeta(oFolder)
Next
End If
Call ProcesarCarpeta(oCarpeta)
TratarCarpeta = True
Exit Function
Error_proc:
Err.Raise Err.Number, Err.Description
TratarCarpeta = False
End Function
Como veis no es nada del otro mundo, pero parece que no le gusta mucho esto de la recursividad a esto del VB.
Muchas gracias por vuestra ayuda
Valora esta pregunta


0