Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   Как заменить Goto (http://forum.oszone.net/showthread.php?t=245404)

Raf_z 24-10-2012 20:21 2011501

Как заменить Goto
 
Здравствуйте.
Подскажите, какой алгоритм применить?
нужно выполнение следующих действий:

окно
название функции1

да-нет-выход
если да - выполнение функции1 и переход к окну название функции2
если нет - пропуск функции1 и переход к окну название функции2
выход - выход из программы

окно
название функции2
да-нет-выход

тот же алгоритм для следующей по порядку функции.

и так несколько функций (около 10)
в конце выход

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

beve 25-10-2012 23:51 2012291

Код:

#include <GUIConstantsEx.au3>

Global $bState=0

For $i=1 to 3 ;у вас сдесь будет по числу ваших функций
    $Gui = GUICreate("Функция"&$i, 269, 101)
    $OkButton = GUICtrlCreateButton("Да", 8, 64, 75, 25)
    $CancelButton = GUICtrlCreateButton("Нет", 96, 64, 75, 25)
    $ExitButton = GUICtrlCreateButton("Выход", 184, 64, 75, 25)
    GUISetState(@SW_SHOW)

    While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
            Case $GUI_EVENT_CLOSE, $ExitButton
                Exit
            Case $OkButton
                $bState=1
                ExitLoop
            Case $CancelButton
                $bState=0
                ExitLoop
            EndSwitch
        sleep(10)
    WEnd

    if $bState=1 then
        Call ( "MyFunction"&$i)
    else
        ContinueLoop
    endif
    $bState=0
    Guidelete($Gui)
Next
Exit

Func MyFunction1()
MsgBox(64,"Message", "Функция 1 выполнена!", 1)
Endfunc

Func MyFunction2()
MsgBox(64,"Message", "Функция 2 выполнена!", 1)
Endfunc

Func MyFunction3()
MsgBox(64,"Message", "Функция 3 выполнена!", 1)
Endfunc



Время: 04:59.

Время: 04:59.
© OSzone.net 2001-