case ... of
Case Of permet de sélectionner une branche de code en fonction d'une valeur unique.
10 : QqchAFaireSi10;
11, 12 : QqchAFaireSi11Ou12;
13..15 : QqchAFaireSiEntre13Et15Inclus;
else
QqchAFaireDansLesAutresCas;
end;
La valeur testée peut être un Integer, un Float, une String, un Booleen, un type énuméré.
Les tests sont effectués dans l'ordre. Dès qu'un test est vérifié, le code correspondant est exécuté.
Les choses à faire en fonction des cas peuvent être des blocs d'instructions (définis entre begin et end).
La clause else est optionnelle. Elle définit automatiquement un bloc d'instructions entre else et end du Case Of (ainsi, si on a plusieurs instructions à exécuter, il est inutile de redéfinir un bloc begin...end).
L'exemple ci-dessus est presque équivalent à
QqchAFaireSi10
else if (valeur = 11) or (valeur = 12) then
QqchAFaireSi11Ou12
else if (valeur >= 13) and (valeur <= 15) then
QqchAFaireSiEntre13Et15Inclus
else begin
QqchAFaireDansLesAutresCas;
end;
la différence étant que dans le cas d'un case of, la valeur n'est évaluée qu'une seule fois.