Label

Inhaltsverzeichnis

Syntax und Verwendung

Ein Label identifiziert eine Codezeile. Es dient als Ziel von Goto oder formt eine Subroutine.

Labelname:

Um ein Label zu erstellen, muss ein Labelname und Doppelpunkt angegeben werden, wie oben gezeigt. Neben Leerraum und Kommentare darf sich kein anderer Code auf derselben Zeile befinden.

Namen: Labelnamen sind nicht von der Groß- und Kleinschreibung abhängig und bestehen aus beliebigen Zeichen, außer Leerzeichen, Tabulator, Komma und Escapezeichen (`). Allerdings sollten die Namen aufgrund von Gestaltungsrichtlinien nur aus Buchstaben, Zahlen und Unterstriche bestehen (zum Beispiel: MeineListView, Menü_Datei_Öffnen und outer_loop). Labelnamen dürfen nur einmal im ganzen Skript vorkommen.

Zwar gibt es keine reservierten Namen, allerdings sollten die folgenden Namen nicht verwendet werden: On, Off, Toggle, AltTab, ShiftAltTab, AltTabAndMenu und AltTabMenuDismiss. Diese Werte haben eine besondere Bedeutung beim Hotkey-Befehl.

Ziel: Das Ziel eines Labels ist die nächste Zeile mit ausführbarem Code. Ausführbarer Code beinhaltet Befehle, Zuweisungen, Ausdrücke und Blöcke, aber nicht Direktiven, Label, Hotkeys oder Hotstrings. Im folgenden Beispiel verweisen run_notepad und #n auf dieselbe Run-Zeile:

run_notepad:
#n::
    Run Notepad
    return

Ausführung: Labels haben wie Direktiven keine Wirkung, wenn sie während einer normalen Ausführung erreicht werden. Im folgenden Beispiel wird eine MsgBox zweimal angezeigt - einmal beim Ausführen der Subroutine durch Gosub und nochmals, nachdem die Subroutine ihr Return erreicht hat:

Gosub Label1

Label1:
MsgBox %A_ThisLabel%
return

Subroutinen

Eine Subroutine ist ein Teil des Codes, der aufgerufen werden kann, um eine bestimmte Aufgabe durchzuführen. Die Ausführung einer Subroutine beginnt beim Ziel eines Labels und endet, wenn ein Return oder Exit erreicht wird. Da das Ende einer Subroutine abhängig von der Ablaufsteuerung ist, kann jedes Label als Goto-Ziel und als Beginn einer Subroutine fungieren.

Dynamische Label

Viele Befehle, die einen Labelnamen akzeptieren, akzeptieren auch eine Variablenreferenz wie %MeinLabel% - in diesem Fall wird der Name, der in der Variable enthalten ist, als Ziel verwendet. Allerdings geschieht das auf Kosten der Performance, weil das Ziellabel jedes Mal neu gesucht werden muss und nicht wie sonst nur beim Starten des Skripts.

Hotkeys und Hotstrings

Hotkey- und Hotstring-Label sind auch gültige Ziele für Goto, Gosub und andere Befehle. Wenn ein Hotkey oder Hotstring jedoch mehrere Varianten hat, dann wird die oberste Variante im Skript verwendet. Alle Modifikatoren des Hotkeys oder Optionen des Hotstrings gehören auch zum Labelnamen, aber die zwei Doppelpunkte (::) werden weggelassen.

Benannte Schleifen

Ein Label kann auch dazu verwendet werden, eine Schleife für die Befehle Continue und Break zu identifizieren. Auf diese Weise kann das Skript einfach eine beliebige Anzahl an verschachtelten Schleifen fortsetzen oder unterbrechen.

Funktionen

[v1.1.20+]: In einigen Fällen können Funktionen anstelle von Labels verwendet werden, dazu zählen:

Die Vorteile von Funktionen sind, dass sie lokale Variablen verwenden können und dass sie in einigen Fällen (wie z. B. Gui-Steuerelement-Ereignisse) auch Parameter mit nützlichen Informationen akzeptieren.

IsLabel(), A_ThisLabel, Gosub, Goto, OnExit, SetTimer, Hotkey, Gui-Ereignisse, g-Label, OnClipboardChange