ayuda con recursion

Tus preguntas. Algoritmos o Grupos de Comandos formando Programas Escripts.
Responder
c1057
Mensajes: 1
Registrado: 27 Feb 2010, 14:46

ayuda con recursion

Mensaje por c1057 »

Hola.
Estoy intentando ajustar una funcion que encontre en el foro de autoit en ingles.
http://www.autoitscript.com/forum/index ... t&p=603830

Quiero que la funcion busque apartir de una clave dada del registro de windows, en todas subclaves que dependan de esta, un valor con un dato puntual, el cual supuestamente aparecera una unica vez.
(Por ejemplo, una adaptador de red cuyo valor "ComponentID" coincida con un string definido por mi. windows podria tener facil una docena de estos identificados por subclaves 0001 ~ nnnn, dentro de la clave: [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}]. Ese era el motivo original de esta funcion, pero creo que le podria dar mas usos)

Los parametros de la funcion serian la clave base en donde empezar la busqueda, el valor y el dato a buscar. Deberia devolver la clave completa donde encontro ese valor con ese dato, o devolver vacio ("").

Pense en este codigo para usar recursion, pero no funciona y no se que estoy haciendo mal. El script se queda detenido en esta sentencia:
$sKey = RegEnumKey ($sStartKey, $iIndex)
que es la primera dentro del ciclo while.

Func _RegSearch ($sStartKey, $sSearchVal, $sSearchData)
$sData = RegRead ($sStartKey, $sSearchVal)
if @error = 0 Then
if $sData = $sSearchData Then
$sResult = $sStartKey
$bFound = True
Else
$sResult = ""
$bFound = False
EndIf
Else
$sResult = ""
$bFound = False
EndIf
$iIndex = 1
while NOT $bFound
$sKey = RegEnumKey ($sStartKey, $iIndex)
if @error = 0 Then
$sResult = _RegSearch ($sStartKey & "\" & $sKey, $sSearchVal, $sSearchData)
EndIf
$iIndex +=1
WEnd
Return $sResult
EndFunc


Es mi primer intento de desarrollar funciones con recursion, y me imagino que el error sera tan simple que no lo puedo distinguir, porque revise codigo de otras funciones de usuario y no veo por que a mi no me funciona. :(

Alguna idea?

Saludos, Carlos
Avatar de Usuario
BasicOs
Site Admin
Mensajes: 2085
Registrado: 21 Nov 2006, 19:24
Ubicación: El Internet - (Canarias, España)
Contactar:

Re: ayuda con recursion

Mensaje por BasicOs »

Aquí tienes algunas funciones que se usan para recursión de ficheros en subdirectorios que puedes usar para la lógica de tu función:
http://www.emesn.com/autoitforum/viewto ... %B3n#p2522

http://www.emesn.com/autoitforum/viewto ... %B3n#p2522

http://www.emesn.com/autoitforum/search ... =recursivo

http://www.emesn.com/autoitforum/search ... =recursion

Seguramente ya has usado msgbox() u cualquier otro método para controlar los valores de las variables en los bucles.

Salu2:)
Responder