Funktion springt zurück

  • Hi,
    ich möchte mit "Test()" in die "Func Test()" springen. Das klappt auch wunderbar.
    Leider springt das Script dann automatisch in die vorherige Funktion zurück, wenn "Func Test()" beendet wurde.

    Gibt es eine Möglichkeit um das zu verhindern?

    Hier ist mal ein Beispiel:

    Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEx.au3>
    Opt("GUIOnEventMode", 1)

    [/autoit] [autoit][/autoit] [autoit]

    $GUI = GUICreate("Test", 130, 45)
    GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSE")
    $Start = GUICtrlCreateButton("Start", 40, 10, 50)
    GUICtrlSetOnEvent(-1, "Start")
    GUISetState(@SW_SHOW)

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    Sleep(1000)
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func Start()
    MsgBox(0,"Func Start",'Start wurde gedrückt.' & @CRLF & 'Starte jetzt "Func Test()".')

    [/autoit] [autoit][/autoit] [autoit]

    Test()

    [/autoit] [autoit][/autoit] [autoit]

    MsgBox(0,"Fortgesetzt",'Die "Func Start()" wird LEIDER fortgesetzt.') ;~ Zum Testen, ob "Func Start()" nach "Func Test()" fortgesetzt wird.
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func Test()
    MsgBox(0,"Func Test",'"Func Test()" wird ausgeführt.')
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func CLOSE()
    Exit
    EndFunc

    [/autoit]

    Gruß
    Nasenbär

    Einmal editiert, zuletzt von Nasenbär (10. Februar 2011 um 17:23)

  • Du könntest das über die Rückgabe der Funktion steuern.
    Dann bleibt dir immernoch die Möglichkeit bei Bedarf die Funktion Start() weiter auszuführen.

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    Opt("GUIOnEventMode", 1)

    [/autoit] [autoit][/autoit] [autoit]

    $GUI = GUICreate("Test", 130, 45)
    GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSE")
    $Start = GUICtrlCreateButton("Start", 40, 10, 50)
    GUICtrlSetOnEvent(-1, "Start")
    GUISetState(@SW_SHOW)

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    Sleep(1000)
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func Start()
    MsgBox(0,"Func Start",'Start wurde gedrückt.' & @CRLF & 'Starte jetzt "Func Test()".')
    If Test() = 1 Then
    Return
    EndIf
    MsgBox(0,"Fortgesetzt",'Die "Func Start()" wird LEIDER fortgesetzt.') ;~ Zum Testen, ob "Func Start()" nach "Func Test()" fortgesetzt wird.
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func Test()
    MsgBox(0,"Func Test",'"Func Test()" wird ausgeführt.')
    Return 1
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func CLOSE()
    Exit
    EndFunc

    [/autoit]

    edit: Übrigens springt da nichts "zurück". Das Skript wird einfach weiter von oben nach unten abgearbeitet.

  • Natürlich spring sie dahin zurück. Er muss ja da weitermachen wo er aufgehört hat.
    Basteln kann man da schon was. Die Frage ist nur für was...
    So gings z.B.

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    Opt("GUIOnEventMode", 1)

    [/autoit] [autoit][/autoit] [autoit]

    $GUI = GUICreate("Test", 130, 45)
    GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSE")
    $Start = GUICtrlCreateButton("Start", 40, 10, 50)
    GUICtrlSetOnEvent(-1, "Start")
    GUISetState(@SW_SHOW)

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    Sleep(1000)
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func Start()
    MsgBox(0,"Func Start",'Start wurde gedrückt.' & @CRLF & 'Starte jetzt "Func Test()".')

    [/autoit] [autoit][/autoit] [autoit]

    If Test() Then Return

    [/autoit] [autoit][/autoit] [autoit]

    MsgBox(0,"Fortgesetzt",'Die "Func Start()" wird LEIDER fortgesetzt.') ;~ Zum Testen, ob "Func Start()" nach "Func Test()" fortgesetzt wird.
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func Test()
    MsgBox(0,"Func Test",'"Func Test()" wird ausgeführt.')
    Return 1
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func CLOSE()
    Exit
    EndFunc

    [/autoit]

    Edit: i2c war schneller ;)

  • Ahh.. dankeschön! 8o:thumbup:
    Jetzt habe ichs verstanden.

    Mit den Funktionen finde ichs jetzt viel übersichtlicher, als den kompletten Code in eine riesige IF-Abfrage zu hauen.


    Gruß
    Nasenbär