Gosub

Springt zu einem bestimmten Label und setzt dort die Ausführung bis zu einem Return fort.

Gosub, Label

Parameter

Label

Name eines Labels, Hotkey-Labels oder Hotstring-Labels, zu dem gesprungen werden soll, um alle Befehle unterhalb von Label bis zu einem Return oder Exit auszuführen. Ein Return bewirkt, dass das Skript zum ersten Befehl unterhalb von Gosub zurückspringt und dort die Ausführung fortsetzt. Exit terminiert den aktuellen Thread.

Bemerkungen

Label kann, wie die meisten Parameter von anderen Befehlen auch, eine Variablenreferenz wie %MeinLabel% sein, um den Inhalt der Variable als Ziel zu verwenden. Dies geschieht jedoch auf Kosten der Performanz, da das Ziellabel jedes Mal neu gesucht werden muss, nicht nur beim Start des Skripts.

Bei Verwendung eines dynamischen Labels wie %MeinLabel% wird ein Fehlerdialogfenster angezeigt, wenn das Label nicht existiert. Um das zu vermeiden, prüfen Sie vorher mit IsLabel(), ob das Label existiert. Zum Beispiel:

if IsLabel(VarMitLabelName)
    Gosub %VarMitLabelName%

Obwohl Gosub für einfache, allgemeine Subroutinen nützlich ist, sollten Sie in Betracht ziehen, für komplexere Anliegen Funktionen zu verwenden.

Return, Funktionen, IsLabel(), Blöcke, Loop, Goto, A_ThisLabel

Beispiele

Dieses Beispiel wird wie folgt ausgeführt:

  1. Springe zum Label namens "Label1".
  2. Zeige die Mitteilung "Die Label1-Subroutine läuft gerade."
  3. Kehre zur Zeile direkt nach Gosub zurück.
  4. Zeige die Mitteilung "Die Label1-Subroutine hat das Return erreicht (sie ist fertig)."
  5. Beende den automatischen Ausführungsbereich.
Gosub, Label1 
MsgBox, Die Label1-Subroutine hat das Return erreicht (sie ist fertig).
return

Label1:
MsgBox, Die Label1-Subroutine läuft gerade.
return