Аналог goto

Ответить
Аватара пользователя
Frost_Imp

Аналог goto

Сообщение Frost_Imp »

Приветствую!

Такой вопрос: насколько я знаю, в AutoIT (по крайней мере в последних верчиях) нет функции goto, которая позволяет выполнять скрипт, состоящий из автономных кусков. Потятно, что есть многочисленные функции одиночных (if... else) и закольцованных (while... wend) циклов, но это все не подходит.

Есть ли аналог функции goto либо какой-нибудь способ редиректа выполнения скрипта с определенного места? Как вариант, может возможно из одного скрипта запустить другой? Я как то пробовал (run кажется), но скрипт после запуска таким методом попросту не выполнялся...
Аватара пользователя
beve

Re: Аналог goto

Сообщение beve »

Цитата Frost_Imp:



Есть ли аналог функции goto либо какой-нибудь способ редиректа выполнения скрипта с определенного места?
Аналог goto




А чем не устраивает то что можна создать свою функцию (любой код) и потом вызывать эту функцию из нужного места скрипта?
Аватара пользователя
Frost_Imp

Re: Аналог goto

Сообщение Frost_Imp »

мммм... Кстати - как вариант... Как то я эту особенность упустил... Синтаксис функции и ее вызова в двух словах напомните, пожалуйста
Аватара пользователя
beve

Re: Аналог goto

Сообщение beve »

Цитата Frost_Imp:



Синтаксис функции и ее вызова в двух словах напомните, пожалуйста
Аналог goto






Код:

Код: Выделить всё

; код
_a() ;вызов функции _a()
; код
Func _a()
;какой то код
EndFunc

В зависимости от того, сколько раз будет вызываться нужная функция, и какие результаты от ее вызова нужны, переменные в ней могут быть или локальные (после завершения обработки этой функции они удаляются) или глобальные (значения в этих переменных не удаляются и могут быть использованы для подальшей обработки)
Аватара пользователя
Frost_Imp

Re: Аналог goto

Сообщение Frost_Imp »

Да мне-то наверное передавать в функции ничего не нужно, просто в зависимасти от тех или иных результатов выполнять ту или иную функцию. Сейчас буду пробовать, спасибо за совет!
Аватара пользователя
Frost_Imp

Re: Аналог goto

Сообщение Frost_Imp »

Попробовал... Не выходит. Ткните носом плиз в ошибку...

Скрипт выносить весь не буду, покажу его структуру



Код:

Код: Выделить всё

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 запускается, проверка проводится, но другие функции не выполняются, то есть скрипт завершается... Почему?
Аватара пользователя
Creat0R

Re: Аналог goto

Сообщение Creat0R »

Цитата Frost_Imp:



скрипт завершается... Почему?
Аналог goto




Потому что синтаксис неправильный у 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

Re: Аналог goto

Сообщение Frost_Imp »

Извиняюсь, допустил неточность при написании. В коде у меня синтаксис правильный



Код:

Код: Выделить всё

If $var1 = "1842204" And $var2 = "9699377" Then
    sleep (60000)
    get_health()
    EndIf
Аватара пользователя
Creat0R

Re: Аналог goto

Сообщение Creat0R »

Цитата Frost_Imp:



другие функции не выполняются
Аналог goto




Значит условие не выполняется (т.е оно не является True - истина).
Ответить

Вернуться в «AutoIt»