Unterfunktionen beenden

  • Nabend,

    spontan jemand eine idee, wie ich subfunctionen beenden kann ohne gleich das hauptfenster abzuschiessen ?

    Ich arbeite mit verschachtelten Funktionen. Wenn ich dann eine Funktion aufrufe, die etwas prüft aber abbrechen soll, will ich nicht mit "Exit" arbeiten, da somit auch das Haupfenster geschlossen wird
    AutoIT interpretiert "EndFunc" gleich, als wollte ich im quelltext die Funktion beenden und aktzeptiert dies im Quellcode nicht.

    Gibts da ne möglichkeit ?
    Evtl mit Return ? :pinch:

    stark vereinfacht:

    [autoit]


    Main()

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

    func Main()
    guicreate()
    pinghost($hostname)
    GUISetState()
    end func

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

    func pinghost($_gethostname)
    local $hostname

    if $hostname = "hugo" then
    msgbox("ok")
    else
    ---- hier nur die funktion ping host abbrechen aber eben main nicht beenden--
    end if

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

    ..
    ..
    ..
    end func

    [/autoit][autoit][/autoit][autoit][/autoit]
  • Hallo Scrat1986,

    herzlich willkommen im Forum und viel Spass mit AutoIt.

    Hier kannst du dir die Hilfe herunterladen.
    Hier gibt es ein AutoIt-Tutorial: http://wiki.autoit.de/wiki/index.php/TutorialSehr hilfreich ist auch das Buch von peethebee

    und jetzt zu deinem Problem: du solltest das komplette Skript posten dann wird es einfacher, ich sehe z.B. nirgends die (für das Skript) lebensnotwendige Endlos-Schleife. Funktionen kannst du vorzeitig mit Return beenden,

    Spoiler anzeigen
    [autoit]

    Main()
    ; *** Start added by AutoIt3Wrapper ***
    #include <GUIConstantsEx.au3>
    ; *** End added by AutoIt3Wrapper ***
    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Add_Constants=n
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    Main()

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

    Func Main()
    GUICreate("Test")
    $hostname = GUICtrlCreateInput("", 5,5)
    $doIt = GUICtrlCreateButton("&Go",220,5)
    GUISetState()
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $doIt
    pinghost(GuiCtrlRead($hostname))

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

    EndSwitch
    WEnd

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

    EndFunc ;==>Main

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

    Func pinghost($_gethostname)
    Local $hostname

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

    If $_gethostname = "hugo" Then
    MsgBox(0,"","ok")
    Else
    ; - - - - hier nur die funktion ping host abbrechen aber eben main nicht beenden - -
    return
    EndIf
    ;ab hier wird nur ausgeführt wenn hugo
    ;..
    ;..
    ;..
    EndFunc ;==>pinghost

    [/autoit]

    mfg autoBert