Показать полную графическую версию : Аналог goto
Frost_Imp
24-07-2009, 11:22
Приветствую!
Такой вопрос: насколько я знаю, в AutoIT (по крайней мере в последних верчиях) нет функции goto, которая позволяет выполнять скрипт, состоящий из автономных кусков. Потятно, что есть многочисленные функции одиночных (if... else) и закольцованных (while... wend) циклов, но это все не подходит.
Есть ли аналог функции goto либо какой-нибудь способ редиректа выполнения скрипта с определенного места? Как вариант, может возможно из одного скрипта запустить другой? Я как то пробовал (run кажется), но скрипт после запуска таким методом попросту не выполнялся...
Есть ли аналог функции goto либо какой-нибудь способ редиректа выполнения скрипта с определенного места? »
А чем не устраивает то что можна создать свою функцию (любой код) и потом вызывать эту функцию из нужного места скрипта?
Frost_Imp
24-07-2009, 12:22
мммм... Кстати - как вариант... Как то я эту особенность упустил... Синтаксис функции и ее вызова в двух словах напомните, пожалуйста
Синтаксис функции и ее вызова в двух словах напомните, пожалуйста »
; код
_a() ;вызов функции _a()
; код
Func _a()
;какой то код
EndFunc
В зависимости от того, сколько раз будет вызываться нужная функция, и какие результаты от ее вызова нужны, переменные в ней могут быть или локальные (после завершения обработки этой функции они удаляются) или глобальные (значения в этих переменных не удаляются и могут быть использованы для подальшей обработки)
Frost_Imp
24-07-2009, 13:31
Да мне-то наверное передавать в функции ничего не нужно, просто в зависимасти от тех или иных результатов выполнять ту или иную функцию. Сейчас буду пробовать, спасибо за совет!
Frost_Imp
24-07-2009, 15:42
Попробовал... Не выходит. Ткните носом плиз в ошибку...
Скрипт выносить весь не буду, покажу его структуру
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 запускается, проверка проводится, но другие функции не выполняются, то есть скрипт завершается... Почему?
скрипт завершается... Почему? »
Потому что синтаксис неправильный у 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.
Frost_Imp
24-07-2009, 16:48
Извиняюсь, допустил неточность при написании. В коде у меня синтаксис правильный
If $var1 = "1842204" And $var2 = "9699377" Then
sleep (60000)
get_health()
EndIf
другие функции не выполняются »
Значит условие не выполняется (т.е оно не является True - истина).
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.