Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » Аналог goto

Ответить
Настройки темы
Аналог goto

Аватара для Frost_Imp

Пользователь


Сообщения: 53
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

Отправлено: 11:22, 24-07-2009

 

Аватара для beve

Старожил


Сообщения: 307
Благодарности: 137

Профиль | Отправить PM | Цитировать


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

-------
Не в кількості знань полягає освіта, а в повному розумінні і вмілому використанні того, що знаєш.


Отправлено: 12:11, 24-07-2009 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Frost_Imp

Пользователь


Сообщения: 53
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

Отправлено: 12:22, 24-07-2009 | #3


Аватара для beve

Старожил


Сообщения: 307
Благодарности: 137

Профиль | Отправить PM | Цитировать


Цитата Frost_Imp:
Синтаксис функции и ее вызова в двух словах напомните, пожалуйста »
Код: Выделить весь код
; код

_a() ;вызов функции _a()

; код

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

-------
Не в кількості знань полягає освіта, а в повному розумінні і вмілому використанні того, що знаєш.


Отправлено: 13:19, 24-07-2009 | #4


Аватара для Frost_Imp

Пользователь


Сообщения: 53
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

Отправлено: 13:31, 24-07-2009 | #5


Аватара для Frost_Imp

Пользователь


Сообщения: 53
Благодарности: 0

Профиль | Отправить PM | Цитировать


Попробовал... Не выходит. Ткните носом плиз в ошибку...
Скрипт выносить весь не буду, покажу его структуру
Код: Выделить весь код
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 запускается, проверка проводится, но другие функции не выполняются, то есть скрипт завершается... Почему?

Отправлено: 15:42, 24-07-2009 | #6


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Цитата 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.

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 16:36, 24-07-2009 | #7


Аватара для Frost_Imp

Пользователь


Сообщения: 53
Благодарности: 0

Профиль | Отправить PM | Цитировать


Извиняюсь, допустил неточность при написании. В коде у меня синтаксис правильный
Код: Выделить весь код
If $var1 = "1842204" And $var2 = "9699377" Then
    sleep (60000)
    get_health()
    EndIf

Отправлено: 16:48, 24-07-2009 | #8


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Цитата Frost_Imp:
другие функции не выполняются »
Значит условие не выполняется (т.е оно не является True - истина).

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 17:14, 24-07-2009 | #9



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » Аналог goto

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] как расшифровать или для чего эта комманда if errorlevel 0 goto k ? fancytux Скриптовые языки администрирования Windows 7 15-01-2015 14:42
[решено] IF EXIST <условие> goto Pozia AutoIt 1 18-01-2009 19:20
Аналог tcpkill абырвалг Программное обеспечение Windows 2 19-12-2007 23:55
аналог {,} в винде superjean Хочу все знать 2 08-12-2006 23:09
Аналог TeleportPro Vlad Drakula Программное обеспечение Windows 6 25-11-2004 11:32




 
Переход