case ... of

Case Of permet de sélectionner une branche de code en fonction d'une valeur unique.

case valeur of
   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 à

if valeur = 10 then
   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.