Case of...Else...End case

4D - Documentation   Français   English   German   English   4D Programmiersprache, Befehle nach Themen   4D Programmiersprache, Befehle alphabetisch   4D Programmiersprache, Konstanten nach Themen   Back   Previous   Next

Version 6.0


Die Syntax für die Abfragefolge Case of...Else...End case lautet:

   Case of
      : (Boolean_Expression)
         statement(s)
      : (Boolean_Expression)
         statement(s)
      .
      .
      .

      : (Boolean_Expression)
         statement(s)
   Else
      statement(s)
   End case

Die zweite Folge, beginnend mit Else ist optional; Sie können auch nur schreiben:

   Case of
      : (Boolean_Expression)
         statement(s)
      : (Boolean_Expression)
         statement(s)
      .
      .
      .

      : (Boolean_Expression)
         statement(s)
   End case

Mit der Struktur Case of...Else...End case kann Ihre Methode wie bei der Struktur If...Else...End if zwischen alternativen Aktionen wählen. Im Gegensatz zur Struktur If...Else...End if prüft die Struktur Case of...Else...End case eine unbegrenzte Anzahl von Boolean Ausdrücken und führt bei einer wahren Bedingung eine Aktion aus.

Vor jedem Boolean Ausdruck steht ein Doppelpunkt (:). Die Kombination aus Doppelpunkt und Boolean Ausdruck kennzeichnet eine Bedingung. Beispiel:

   : (bValidate=1)

Nur die Anweisungsfolge wird ausgeführt, die bei der Abfrage als erstes mit der Bedingung übereinstimmt. Trifft keine der Bedingungen zu, wird keine Anweisungsfolge ausgeführt.

Sie können nach der letzten Befehlsfolge eine Else Anweisung integrieren. Sind dann alle Bedingungen falsch, wird die Anweisungsfolge nach Else ausgeführt.

Beispiel

Dieses Beispiel prüft eine numerische Variable und zeigt eine Warnung mit einem Wort an:

   Case of
      : (vResult = 1)   ` Prüfe, ob die Nummer gleich 1 ist
         ALERT("Eins.")   ` Wenn ja, zeige eine Warnung
      : (vResult = 2)   ` Prüfe, ob die Nummer gleich 2 ist
         ALERT("Zwei.")   ` Wenn ja, zeige eine Warnung
      : (vResult = 3) ` Prüfe, ob die Nummer gleich 3 ist
         ALERT("Drei.")   ` Wenn ja, zeige eine Warnung
   Else   ` Ist es weder 1, 2 oder 3, zeige eine Warnung
      ALERT("Es war weder eins, zwei oder drei.")
   End case

Zum Vergleich folgt hier dieselbe Methode mit der Abfrage If...Else...End if:

   If (vResult = 1)   ` Prüfe, ob die Nummer gleich 1 ist
      ALERT("Eins.")   ` Wenn ja, zeige eine Warnung
   Else
      If (vResult = 2)   ` Prüfe, ob die Nummer gleich 2 ist
         ALERT("Zwei.")   ` Wenn ja, zeige eine Warnung
      Else
         If (vResult = 3)   ` Prüfe, ob die Nummer gleich 3 ist
            ALERT("Drei.")   `Wenn ja, zeige eine Warnung
         Else   ` Ist es weder 1, 2 oder 3, zeige eine Warnung
            ALERT("Es war weder eins, zwei oder drei.")
         End if
      End if
   End if

Beachten Sie, dass bei der Struktur Case of...Else...End case nur die erste Bedingung, die WAHR ist, ausgeführt wird. Selbst wenn zwei oder mehr Bedingungen WAHR sind, werden nur die Befehlsfolgen nach der ersten wahren Bedingung ausgeführt.

Wollen Sie demnach in derselben Methode einfache und komplexe Bedingungen prüfen, müssen Sie die komplexen vor die einfachen Bedingungen setzen, da diese sonst nie ausgeführt werden könnten. Schreiben Sie z.B.:

   Case of

: (vResult = 1)
         ...   `Instruction(s)
      : ((vResult = 1) & (vRequest#2))   
         ` Die nachfolgenden Anweisungen werden NIE ausgeführt
         ...   `Instruction(s)
   End case

werden die der komplexen Bedingung zugeordneten Anweisungen nie ausgeführt. Denn dieser Fall ist nur WAHR, wenn die beiden booleschen Bedingungen wahr sind. Nun ist jedoch die erste Bedingung die vorangestellte einfache Bedingung. Wenn sie WAHR ist, wird die einfache Bedingung ausgeführt und 4D verlässt die Schleife, ohne die komplexe Bedingung zu bewerten. Das geschieht nur, wenn Sie Ihre Methode folgendermaßen strukturieren:

   Case of
      : (vResult = 1) & (vRequest#2)  
          ` Komplexe Bedingungen müssen immer an erster Stelle stehen
         ...    `Instruction(s)
      : (vResult = 1)
         ...    `Instruction(s)
   End case

Tip: Sie können auch Schleifen ohne Befehlsfolge einrichten. Wenn Sie einen Algorithmus oder eine spezifische Anwendung entwickeln, können Sie auch schreiben:

   Case of
      : (Boolean_Expression)
      : (Boolean_Expression)

      .
      .
      : (Boolean_Expression)
         statement(s)
   Else
      statement(s)
   End case

oder:

   Case of
      : (Boolean_Expression)
      : (Boolean_Expression)
         statement(s)
      .
      .

      : (Boolean_Expression)
         statement(s)
   Else
   End case

oder:

   Case of
   Else
      statement(s)
   End case

Referenz

Ablaufsteuerung, For...End for, If...Else...End if, Repeat...Until, While...End while.


4D - Documentation   Français   English   German   English   4D Programmiersprache, Befehle nach Themen   4D Programmiersprache, Befehle alphabetisch   4D Programmiersprache, Konstanten nach Themen   Back   Previous   Next