<script src="../static/ga4.js" type="text/javascript"></script> </head> <body> <h1>Labels</h1> <h2 id="toc">Inhaltsverzeichnis</h2> <ul> <li><a href="#syntax-and-usage">Syntax und Verwendung</a></li> <li><a href="#subroutines">Subroutinen</a></li> <li><a href="#dynamic-labels">Dynamische Labels</a></li> <li><a href="#hotkeys-and-hotstrings">Hotkeys und Hotstrings</a></li> <li><a href="#named-loops">Benannte Schleifen</a></li> <li><a href="#Functions">Funktionen</a></li> <li><a href="#related">Siehe auch</a></li> </ul> <h2 id="syntax-and-usage">Syntax und Verwendung</h2> <p>Ein Label identifiziert eine Codezeile und kann als <a href="../lib/Goto.htm">Goto</a>-Ziel oder zur Erstellung einer <a href="#subroutines">Subroutine</a> verwendet werden. Es gibt drei verschiedene Arten von Labels: Normale benannte Labels, <a href="../Hotkeys.htm">Hotkey</a>-Labels und <a href="../Hotstrings.htm">Hotstring</a>-Labels.</p> <p>Normale Labels bestehen aus einem Namen gefolgt von einem Doppelpunkt:</p> <pre>das_ist_ein_Label:</pre> <p>Hotkey-Labels bestehen aus einem Hotkey gefolgt von zwei Doppelpunkten:</p> <pre>^a::</pre> <p>Hotstring-Labels bestehen aus einem Doppelpunkt, beliebig vielen <a href="../Hotstrings.htm#Options">Optionen</a>, einem weiteren Doppelpunkt, einer Abkürzung und zwei Doppelpunkten:</p> <pre>:*:bzw::</pre> <p>Abgesehen von Leerraumzeichen und Kommentaren darf grundsätzlich kein weiterer Code auf der Zeile eines Labels stehen. Allerdings:</p> <ul> <li>Direkt nach einem Hotkey-Label kann ein Befehl oder eine andere Anweisung folgen, um einen <em>einzeiligen</em> Hotkey zu erstellen. Mit anderen Worten, wenn auf der Zeile eines Hotkey-Labels ein Befehl, eine Zuweisung oder ein Ausdruck steht, verhält es sich so, als wäre danach <code>return</code> angegeben worden.</li> <li>Ein Hotkey, der rechts neben den zwei Doppelpunkten einen <a href="../KeyList.htm">Tastennamen</a> stehen hat, ist eigentlich eine <a href="Remap.htm"><em>Neubelegung</em></a>, was eine Kurzschreibweise für ein <a href="Remap.htm#actually">Hotkey-Paar</a> ist. Zum Beispiel erstellt <code>a::b</code> Hotkeys und Labels für <code>*a</code> und <code>*a Up</code>, aber kein Label mit dem Namen <code>a</code>.</li> <li>Ein Hotstring, der rechts neben den letzten zwei Doppelpunkten Text stehen hat, ist ein <em>automatisch-ersetzender</em> Hotstring. Automatisch-ersetzende Hotstrings fungieren nicht als Labels.</li> </ul> <p><strong>Namen:</strong> Labelnamen sind nicht Groß-/Kleinschreibung-sensitiv und können aus beliebigen Zeichen bestehen, außer Leerzeichen, Tabulatorzeichen, Komma und <a href="EscapeChar.htm">Escapezeichen</a> (`). Allerdings ist es aufgrund von Gestaltungsrichtlinien grundsätzlich besser, nur Buchstaben, Zahlen und Unterstriche zu verwenden (zum Beispiel: <em>MeineListView</em>, <em>Menü_Datei_Öffnen</em> und <em>äußere_Schleife</em>). Labelnamen müssen im gesamten Skript eindeutig sein.</p> <p>Obwohl es keine reservierten Namen gibt, wird dringend empfohlen, die folgenden Namen nicht zu verwenden: On, Off, Toggle, AltTab, ShiftAltTab, AltTabAndMenu und AltTabMenuDismiss. Diese Werte haben eine besondere Bedeutung für den <a href="../lib/Hotkey.htm">Hotkey-Befehl</a>.</p> <p><strong>Ziel:</strong> Das Ziel eines Labels ist die nächste ausführbare Codezeile. Ausführbarer Code umfasst Befehle, Zuweisungen, <a href="../Variables.htm#Expressions">Ausdrücke</a> und <a href="../lib/Block.htm">Blöcke</a>, aber keine Direktiven, Labels, Hotkeys oder Hotstrings. Im folgenden Beispiel verweisen <code>run_notepad</code> und <code>#n</code> auf dieselbe <code>Run</code>-Zeile:</p> <pre>run_notepad: #n:: Run Notepad return</pre> <p><strong>Ausführung:</strong> Labels haben wie Direktiven keine Wirkung, wenn sie während einer normalen Ausführung erreicht werden. Im folgenden Beispiel wird ein Mitteilungsfenster zweimal angezeigt - einmal, wenn die Subroutine von <a href="../lib/Gosub.htm">Gosub</a> ausgeführt wird, und noch einmal, nachdem die Subroutine ihr Return erreicht hat:</p> <pre>Gosub Label1 Label1: MsgBox <a href="../Variables.htm#ThisLabel">%A_ThisLabel%</a> return</pre> <h2 id="subroutines">Subroutinen</h2> <p>Eine Subroutine ist ein Teil des Codes, der <em>aufgerufen</em> werden kann, um eine bestimmte Aufgabe durchzuführen. Die Ausführung einer Subroutine beginnt beim Ziel eines Labels und endet, wenn ein <a href="../lib/Return.htm">Return</a> oder <a href="../lib/Exit.htm">Exit</a> erreicht wird. Da das Ende einer Subroutine vom Kontrollfluss abhängt, kann jedes Label als Goto-Ziel und als Start einer Subroutine fungieren.</p> <h2 id="dynamic-labels">Dynamische Labels</h2> <p>Viele Befehle, die einen Labelnamen akzeptieren, akzeptieren auch eine <a href="../Variables.htm">Variablenreferenz</a> wie %MeinLabel%, 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.</p> <h2 id="hotkeys-and-hotstrings">Hotkeys und Hotstrings</h2> <p>Jeder <a href="../Hotkeys.htm">Zweifach-Doppelpunkt-Hotkey</a> erzeugt ebenfalls ein Label, es sei denn, es handelt sich um einen <a href="../Hotkeys.htm#Function">Funktions-Hotkey</a>. Der Name des Labels entspricht genau dem, wie er im Skript geschrieben steht, und kann vom Namen des Hotkeys (widergespiegelt durch <a href="../Variables.htm#ThisHotkey">A_ThisHotkey</a>) abweichen, z.B. wenn die Modifikatoren in einer anderen Reihenfolge geschrieben sind. Der Labelname enthält die Modifikatoren des Hotkeys, aber nicht die zwei Doppelpunkte am Ende (<code>::</code>).</p> <p>Der Name eines <a href="../Hotstrings.htm#label">Hotstring-Labels</a> enthält den ersten Doppelpunkt und die Optionen, aber nicht die zwei Doppelpunkte am Ende (<code>::</code>).</p> <p><a href="../Hotkeys.htm">Hotkey</a>- und <a href="../Hotstrings.htm#label">Hotstring</a>-Labels sind auch gültige Ziele für <a href="../lib/Goto.htm">Goto</a>, <a href="../lib/Gosub.htm">Gosub</a> und andere Befehle. Allerdings kann ein Hotkey- oder Hotstring-Label nur auf diese Weise verwendet werden, wenn es das erste Label mit dem angegebenen Namen ist. Zum Beispiel:</p> <pre>gosub ^+a <em>; Beispiel-Hotkey.</em> gosub +^a <em>; Globaler Hotkey.</em> gosub Esc <em>; Esc-Label.</em> ExitApp #IfWinActive Beispiel ^+a::MsgBox Beispiel-Hotkey. Esc: MsgBox Esc-Label. return #If +^a::MsgBox Globaler Hotkey. Esc::MsgBox Esc-Hotkey.</pre> <p>Diese Einschränkung gilt auch für den <em>Label</em>-Parameter des <a href="../lib/Hotkey.htm">Hotkey</a>-Befehls.</p> <h2 id="named-loops">Benannte Schleifen</h2> <p>Ein Label kann auch verwendet werden, um eine Schleife für die Befehle <a href="../lib/Continue.htm">Continue</a> und <a href="../lib/Break.htm">Break</a> zu identifizieren. Dadurch kann das Skript von einer inneren Schleife heraus den aktuellen Durchlauf einer äußeren Schleife überspringen oder die äußere Schleife unterbrechen.</p> <h2 id="Functions">Funktionen</h2> <p><span class="ver">[v1.1.20+]</span>: In einigen Fällen können <a href="../Functions.htm">Funktionen</a> anstelle von Labels verwendet werden. Zum Beispiel:</p> <ul> <li><a href="../lib/Gui.htm#Labels">Gui-Ereignisse</a> wie z.B. GuiClose</li> <li><a href="../lib/Gui.htm#label">Gui-Steuerelement-Ereignisse</a> (g-Labels)</li> <li><a href="../lib/Hotkey.htm#Functor">Hotkey</a></li> <li><a href="../lib/Menu.htm#Functor">Menu</a></li> <li><a href="../lib/SetTimer.htm#Functor">SetTimer</a></li> </ul> <p>Funktionen haben den Vorteil, dass sie lokale Variablen verwenden können und in einigen Fällen (wie z.B. Gui-Steuerelement-Ereignisse) auch Parameter mit nützlichen Informationen akzeptieren.</p> <h2 id="related">Siehe auch</h2> <p><a href="../lib/IsLabel.htm">IsLabel()</a>, <a href="../Variables.htm#ThisLabel">A_ThisLabel</a>, <a href="../lib/Gosub.htm">Gosub</a>, <a href="../lib/Goto.htm">Goto</a>, <a href="../lib/OnExit.htm#command">OnExit</a>, <a href="../lib/SetTimer.htm">SetTimer</a>, <a href="../lib/Hotkey.htm">Hotkey</a>, <a href="../lib/Gui.htm#Labels">Gui-Ereignisse</a>, <a href="../lib/Gui.htm#label">g-Label</a>, <a href="../lib/OnClipboardChange.htm#label">OnClipboardChange-Label</a></p> </body> </html>