| Operatoren |
switch — Einleiten einer Mehrfachverzweigung.
switch( : : ControlExpression : )
switch leitet einen Block mit einer Mehrfachverzweigung bzw. Fallunterscheidung ein. Der Parameter ControlExpression muss einen Integerwert ergeben. Der berechnete Wert bestimmt, zu welcher case-Marke innerhalb des switch..endswitch-Blocks gesprungen wird. Jede case-Anweisung enthält genau eine Integerkonstante. Stimmen der in ControlExpression berechnete Wert und die case-Konstante überein, wird die entsprechende Marke angesprungen. Optional kann innerhalb eines switch-Blocks als letzte Sprungmarke eine default-Anweisung angegeben werden. Diese wird angesprungen, wenn für den in ControlExpression berechneten Wert keine passende case-Anweisung gefunden wurde.
Wie in den Programmiersprachen C, C++ und C# stellt die case-Anweisung eine Sprungmarke dar und leitet anders als elseif nicht einen abgeschlossenen Block ein, der automatisch beim nächsten case verlassen wird.
Um nach den Anweisungen eines case-Zweiges den switch-Block zu verlassen, muss wie in C und C++ eine break-Anweisung eingebaut werden. Diese kann auch an beliebigen Stellen innerhalb eines case-Zweiges angegeben werden. Wird in der Programmausführung ein break erreicht, wird von dort direkt hinter die den switch-Block abschließende endswitch-Anweisung gesprungen.
Sollen für mehrere Intergerwerte die gleichen Programmzeilen ausgeführt werden, können mehrere case-Anweisungen unmittelbar aufeinander folgen.
Integerausdruck, der die anzuspringende Sprungmarke bestimmt.
TestStr := ''
for Index := 1 to 8 by 1
TestStr := TestStr + '<'
switch (Index)
case 1:
TestStr := TestStr + '1'
break
case 2:
TestStr := TestStr + '2'
* intentionally fall through to 3
case 3:
TestStr := TestStr + '3'
* intentionally fall through to 4
case 4:
TestStr := TestStr + '4'
break
case 5:
case 6:
* common case branch for 5 and 5
TestStr := TestStr + '56'
break
case 7:
* continue for loop
TestStr := TestStr + '7'
continue
default:
TestStr := TestStr + 'd'
break
endswitch
TestStr := TestStr + '>'
endfor
Enthält die Bedingung einen korrekten Ausdruck, dann liefert switch (als Operator) den Wert 2 (H_MSG_TRUE). Andernfalls wird eine Fehlerbehandlung durchgeführt und ein Fehlercode zurückgeliefert.
Foundation
| Operatoren |