-
AutoIt
(
http://forum.oszone.net/forumdisplay.php?f=103)
- -
Аналог goto
(
http://forum.oszone.net/showthread.php?t=146070)
Аналог goto
Приветствую!
Такой вопрос: насколько я знаю, в AutoIT (по крайней мере в последних верчиях) нет функции goto, которая позволяет выполнять скрипт, состоящий из автономных кусков. Потятно, что есть многочисленные функции одиночных (if... else) и закольцованных (while... wend) циклов, но это все не подходит.
Есть ли аналог функции goto либо какой-нибудь способ редиректа выполнения скрипта с определенного места? Как вариант, может возможно из одного скрипта запустить другой? Я как то пробовал (run кажется), но скрипт после запуска таким методом попросту не выполнялся...
|
Цитата:
Цитата Frost_Imp
Есть ли аналог функции goto либо какой-нибудь способ редиректа выполнения скрипта с определенного места? »
|
А чем не устраивает то что можна создать свою функцию (любой код) и потом вызывать эту функцию из нужного места скрипта?
|
мммм... Кстати - как вариант... Как то я эту особенность упустил... Синтаксис функции и ее вызова в двух словах напомните, пожалуйста
|
Цитата:
Цитата Frost_Imp
Синтаксис функции и ее вызова в двух словах напомните, пожалуйста »
|
Код:
; код
_a() ;вызов функции _a()
; код
Func _a()
;какой то код
EndFunc
В зависимости от того, сколько раз будет вызываться нужная функция, и какие результаты от ее вызова нужны, переменные в ней могут быть или локальные (после завершения обработки этой функции они удаляются) или глобальные (значения в этих переменных не удаляются и могут быть использованы для подальшей обработки)
|
Да мне-то наверное передавать в функции ничего не нужно, просто в зависимасти от тех или иных результатов выполнять ту или иную функцию. Сейчас буду пробовать, спасибо за совет!
|
Попробовал... Не выходит. Ткните носом плиз в ошибку...
Скрипт выносить весь не буду, покажу его структуру
Код:
get_check() ;вызываю функцию проверки
Func one()
;код функции one
EndFunc
Func two()
;код функции two
EndFunc
Func get_check()
if
;условие 1
then
one() ;если условия одни - вызываю функцию one
endif
if
;условие 2
then
two() ;если условия другие - вызываю функцию two
endif
if
;условие 3
then
get_check() ;если условия которые нужны не выполняется - запускаю эту функцию снова
endif
EndFunc
Соответственно проблема в том, что функция get_check запускается, проверка проводится, но другие функции не выполняются, то есть скрипт завершается... Почему?
|
Цитата:
Цитата Frost_Imp
скрипт завершается... Почему? »
|
Потому что синтаксис неправильный у If...Then...
Код:
get_check() ;вызываю функцию проверки
Func one()
;код функции one
EndFunc
Func two()
;код функции two
EndFunc
Func get_check()
If 1 = 1 Then ;условие 1
one() ;если условия одни - вызываю функцию one
EndIf
If 1 = 1 Then ;условие 2
two() ;если условия другие - вызываю функцию two
EndIf
If 1 = 1 Then ;условие 3 - плохая идея
get_check() ;если условия которые нужны не выполняется - запускаю эту функцию снова
EndIf
EndFunc
См. справку по If...Else...Then.
|
Извиняюсь, допустил неточность при написании. В коде у меня синтаксис правильный
Код:
If $var1 = "1842204" And $var2 = "9699377" Then
sleep (60000)
get_health()
EndIf
|
Цитата:
Цитата Frost_Imp
другие функции не выполняются »
|
Значит условие не выполняется (т.е оно не является True - истина).
|
Время: 05:24.
© OSzone.net 2001-