Что нового

Падает UDF функция _RegCopyKey

dimid

Новичок
Сообщения
20
Репутация
0
Доброго дня!

Падает функция _RegCopyKey (качал udf с creator-lab). Пытаюсь копирнуть раздел в котором около сотни разделов. Может стоит как-нибудь функцию модифицировать чтобы она без рекурсии работала или просто она не предназначена для такой операции?

AutoIt Error
---------------------------
Line 2534 (File "C:\Documents and Settings\Administrator\Start Menu\Programs\Startup\test.exe"):
Error: Recursion level has been exceeded - AutoIt will quit to prevent stack overflow.
---------------------------
OK

Чтобы далеко не бегать никому, вот сама функция (попробуйте с ее помощью скопировать большой раздел и будет падение):


Код:
Func _RegCopyKey($s_Key, $d_Key, $iDelete = False)
	Local $i, $sVal, $sData, $sType, $sKey

	RegWrite($d_Key) ; write dest Key, in case Key empty
	If @error <> 0 Then Return @error ; some error
	
	; Value loop
	$i = 0
	
	While 1
		$i += 1
		
		$sVal = RegEnumVal($s_Key, $i)
		If @error <> 0 Then ExitLoop ; no more Values
		
		$sData = RegRead($s_Key, $sVal)
		If @error <> 0 Then ContinueLoop ; some error reading Value, skip it
		
		$sType = _RegGetExtendedType(@extended)
		RegWrite($d_Key, $sVal, $sType, $sData) ; write new Value
	WEnd
	
	; Key loop
	$i = 0
	
	While 1
		$i += 1
		$Key = RegEnumKey($s_Key, $i)
		If @error <> 0 Then ExitLoop ; no more Keys
		
		_RegCopyKey($s_Key & "\" & $sKey, $d_Key & "\" & $sKey) ; recurse
	WEnd
	
	; move Key
	If $iDelete Then RegDelete($s_Key)
EndFunc   ;==>_RegCopyKey
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
dimid,
Посмотрите
Код:
#Include <WinAPIEx.au3>

_WinAPI_RegCopyTree()
_WinAPI_RegCopyTreeEx
 
Автор
D

dimid

Новичок
Сообщения
20
Репутация
0
madmasles, а что лучше использовать? то, что я сейчас или то, что вы предложили? кстати, а откуда вы узнали об этих функциях? из более новой справки или это UDF с форума? а то у меня нет в справке этих функций...
 
Автор
D

dimid

Новичок
Сообщения
20
Репутация
0
если не ошибаюсь, то в хр это работать не будет...
 
Верх