Что нового

AdlibRegister и значения по умолчаню в функциях

running-frag

why me?
Сообщения
441
Репутация
60
и снова здраствуйте :D

Код:
Func Function1($_one = False, $_two = False)
	If Not ($_one) Then
		ConsoleWrite ("one false"&@CR)
		Return False
	EndIf
	
	If Not ($_two) Then
		ConsoleWrite ("two false"&@CR)
		Return False
	EndIf
		
EndFunc

Function1()

AdlibRegister ("Function1", 5000)

While True
	
WEnd


Чем можно обьяснить данный момент. Когда функция выполняется - она понимает что к чему. Но когда её запускаем через AdlibRegister () то уже получаем ошибку в виде
Код:
D:\_autoit\test4.au3 (2) : ==> Variable used without being declared.:
If Not ($_one) Then
If Not (^ ERROR
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
running-frag,
При AdlibRegister() параметры игнорируются.
Код:
Global $_one, $_two = True

AdlibRegister('Function1', 1000)
AdlibRegister('_Func', 700)
While 1
	Sleep(100)
WEnd

Func _Func()
	$_one = Not $_one
	$_two = Not $_two
EndFunc

Func Function1()
	ConsoleWrite('one: ' & $_one & @LF)
	ConsoleWrite('two: ' & $_two & @LF)
EndFunc   ;==>Function1
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
running-frag [?]
Когда функция выполняется - она понимает что к чему. Но когда её запускаем через AdlibRegister () то уже получаем ошибку
В таких случаях нужно проверять “объявленность” параметров:

Код:
Function1()

AdlibRegister("Function1", 5000)
Sleep(5000)

Func Function1($_one = False, $_two = False)
	If Not IsDeclared("_one") Or Not ($_one) Then
        ConsoleWrite("one false" & @CR)
        Return False
    EndIf
    
    If Not IsDeclared("_two") Or Not ($_two) Then
        ConsoleWrite("two false" & @CR)
        Return False
    EndIf
EndFunc
 
Верх