Aus Func tieferer Ebene nach ganz oben springen?

  • Hi,

    in meinem Script, wird ein Func in einer Func aufgerufen. Ich möchte jetzt gerne nicht nur aus der aktuellen Func zurück springen, sondern auch aus der darüberliegenden.

    Hier mal ein Beispiel Code:

    [autoit]


    Func F1()
    F2()
    F3()
    EndFunc

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

    Func F2()
    Irgendwas machen....
    If @error then Return ;hier möchte ich auch aus F1() springen, damit F3() nicht ausgeführt wird.
    noch mehr machen...
    EndFunc

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

    Func F3()
    irgendwas anderes machen...
    EndFunc

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

    Ich wüsste jetzt nur eine "Pfusch" Lösung, indem ich mir eine Variable mache und da 1 oder 0 rein schreibe. Je nachdem ob es einen Error gab oder nicht.
    Bevor F3() dann ausgeführt wird, wird die Variable überprüft.
    Gibt es da nichts schöneres?

    Danke
    Gruß Daniel

    Einmal editiert, zuletzt von danielsan85 (20. Dezember 2010 um 15:28)

  • Hallo Seterror() und dann prüfen ob @error eine wert ungleich 0 enthält oder

    Spoiler anzeigen
    [autoit]

    Func F1()
    if F2() then
    F3()
    endif
    EndFunc

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

    Func F2()
    Irgendwas machen....
    If @error then Return 0 ;hier möchte ich auch aus F1() springen, damit F3() nicht ausgeführt wird.
    noch mehr machen...
    return 1
    EndFunc

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

    Func F3()
    irgendwas anderes machen...
    EndFunc

    [/autoit]
  • Hi danielsan85,

    Gibt es da nichts schöneres?

    Eine Möglichkeit ohne SetError wäre das hier:

    [autoit]

    Func F1()
    If Not F2() Then Return
    F3()
    EndFunc

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

    Func F2()
    Irgendwas machen....
    If @error then Return 0 ;hier möchte ich auch aus F1() springen, damit F3() nicht ausgeführt wird.
    noch mehr machen...
    Return 1
    EndFunc

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

    Func F3()
    irgendwas anderes machen...
    EndFunc

    [/autoit]
  • Danke! Habt mir wie immer super geholfen!

    Ich habe es wie Tigger1975 vorgeschlagen hat gelöst.

    Danke nochmal an alle!

    Gruß Daniel