Что нового

Вызов функции используя ее текстовое название

V

vladu

Гость
Добрый день,

возможно ли вызвать функцию используя ее текстовое название?

Пример:
Код:
XXXX("Fun1")
XXXX("Fun2")


Func Fun1()
EndFunc

Func Fun2()
EndFunc


В примере с помощью функции XXXX происходит вызов других функций, используя их название.
Есть ли такая функция/возможность в AutoIt?

Заранее спасибо за помощь.
 
Автор
S

ShAG1992D

Гость
Можно так

Код:
AdlibRegister("Fun1",700)
AdlibRegister("Fun2",700)

While 1
    Sleep(100)
WEnd

Func Fun1()
EndFunc

Func Fun2()
EndFunc
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
vladu [?]
возможно ли вызвать функцию используя ее текстовое название?
"Текстовое название" и есть вызов функции.
Код:
Fun1()
Fun2()

Func Fun1()
EndFunc

Func Fun2()
EndFunc
 
Автор
V

vladu

Гость
4: ShAG1992D
спасибо за пример с AdlibRegister !

4: InnI
согласен с вами ... просто пример упростил до минимума, вот более сложный.
Задача -- повторно не писать один и тот же код "куча проверок 1" и "куча проверок 2"

Код:
Main("Fun1")
Main("Fun2")


Func Main($funcName)
    ; куча проверок 1
    XXXX($funcName)
    ; куча проверок 2
EndFunc


Func Fun1()
EndFunc


Func Fun2()
EndFunc



Добавлено:
Сообщение автоматически объединено:

более внимательно почитал про AdlibRegister
и к сожалению много разных проблем появится при ее использовании:
- "выполнение этой функции не должно быть заблокировано, избегайте использования...Wait(), MsgBox(), InputBox()"
- а так же отловить момент когда она завершится и затем вызвать AdlibUnRegister, при этом приостановить выполнение основного кода ...


решение подсказал Medic84
Execute("....")
в теме http://autoit-script.ru/index.php/topic,10483.msg69347.html#msg69347

Всем спасибо за помощь !!!
 

Viktor1703

AutoIT Гуру
Сообщения
1,535
Репутация
413
Код:
Execute('Test()')

Func Test()
    MsgBox(0, "", "")
EndFunc


Или

Код:
Execute('Test("Caption", "Hello World!!!")')

Func Test($Title, $Text)
    MsgBox(0, $Title, $Text)
EndFunc


C переменной

Код:
$Caption = "Caption"

Execute('Test("' & $Caption & '", "Hello World!!!")')

Func Test($Title, $Text)
    MsgBox(0, $Title, $Text)
EndFunc
 
Верх