Wählen Sie oben rechts eine andere Programmiersprache aus.

Wählen Sie oben rechts eine andere Programmiersprache aus.

Wählen Sie oben rechts eine andere Programmiersprache aus.

switchswitchSwitchSwitch (Operator)

Name

switchswitchSwitchSwitch — Einleiten einer Mehrfachverzweigung.

Signatur

switch( : : ControlExpression : )

Herror switch(const Hlong ControlExpression)

Herror T_switch(const Htuple ControlExpression)

void Switch(const HTuple& ControlExpression)

static void HOperatorSet.Switch(HTuple controlExpression)

Beschreibung

switchswitchSwitchSwitchSwitch leitet einen Block mit einer Mehrfachverzweigung bzw. Fallunterscheidung ein. Der Parameter ControlExpressionControlExpressionControlExpressionControlExpressioncontrolExpression muss einen Integerwert ergeben. Der berechnete Wert bestimmt, zu welcher casecaseCaseCaseCase-Marke innerhalb des switchswitchSwitchSwitchSwitch..endswitchendswitchEndswitchEndswitchEndswitch-Blocks gesprungen wird. Jede casecaseCaseCaseCase-Anweisung enthält genau eine Integerkonstante. Stimmen der in ControlExpressionControlExpressionControlExpressionControlExpressioncontrolExpression berechnete Wert und die casecaseCaseCaseCase-Konstante überein, wird die entsprechende Marke angesprungen. Optional kann innerhalb eines switchswitchSwitchSwitchSwitch-Blocks als letzte Sprungmarke eine defaultdefaultDefaultDefaultDefault-Anweisung angegeben werden. Diese wird angesprungen, wenn für den in ControlExpressionControlExpressionControlExpressionControlExpressioncontrolExpression berechneten Wert keine passende casecaseCaseCaseCase-Anweisung gefunden wurde.

Wie in den Programmiersprachen C, C++ und C# stellt die casecaseCaseCaseCase-Anweisung eine Sprungmarke dar und leitet anders als elseifelseifElseifElseifElseif nicht einen abgeschlossenen Block ein, der automatisch beim nächsten casecaseCaseCaseCase verlassen wird.

Um nach den Anweisungen eines casecaseCaseCaseCase-Zweiges den switchswitchSwitchSwitchSwitch-Block zu verlassen, muss wie in C und C++ eine breakbreakBreakBreakBreak-Anweisung eingebaut werden. Diese kann auch an beliebigen Stellen innerhalb eines casecaseCaseCaseCase-Zweiges angegeben werden. Wird in der Programmausführung ein breakbreakBreakBreakBreak erreicht, wird von dort direkt hinter die den switchswitchSwitchSwitchSwitch-Block abschließende endswitchendswitchEndswitchEndswitchEndswitch-Anweisung gesprungen.

Sollen für mehrere Intergerwerte die gleichen Programmzeilen ausgeführt werden, können mehrere casecaseCaseCaseCase-Anweisungen unmittelbar aufeinander folgen.

Parameter

ControlExpressionControlExpressionControlExpressionControlExpressioncontrolExpression (input_control)  integer HTupleHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Integerausdruck, der die anzuspringende Sprungmarke bestimmt.

Beispiel (HDevelop)

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

Ergebnis

Enthält die Bedingung einen korrekten Ausdruck, dann liefert switchswitchSwitchSwitchSwitch (als Operator) den Wert 2 (H_MSG_TRUE). Andernfalls wird eine Fehlerbehandlung durchgeführt und ein Fehlercode zurückgeliefert.

Alternativen

ififIfIfIf, elseifelseifElseifElseifElseif, elseelseElseElseElse

Siehe auch

casecaseCaseCaseCase, defaultdefaultDefaultDefaultDefault, endswitchendswitchEndswitchEndswitchEndswitch, ififIfIfIf

Modul

Foundation