Voici un doux rêve :
Procedure CaseOf ;
Var S :string ;
Begin
S :=AppelAFonctionMachin ;
Case s of
’truc1’ :begin ... end ;
’truc2’ :begin ... end ;
’truc3’ :begin ... end ;
....
End ;
End ;
Et manque de chance cela n’est pas possible avec Delphi...
Il est facile de remplacer ceci par un rateau qui ressemble à ceci :
Procedure CaseOf ;
Var
S :string ;
Begin
S :=AppelAFonctionMachin ;
If s=’truc1’ then
Begin...end
Else
If s=’truc2’ then
Begin...end
Else
If s=’truc3’ then
Begin ...end ;
End ;
mais bon cela n’est pas très satisfaisant pour faire du code efficace.
Voici un petit truc pour contourner le problème :
Type TMesTrucs=(TRUC1,TRUC2,TRUC3) ;
Procedure CaseOf ;
Var
S :string ;
Begin
S :=AppelAFonctionMachin ;
Case TMesTrucs(GetEnumValue (TypeInfo(TMesTrucs), uppercase(s))) of;
TRUC1 :begin ... end ;
TRUC2 :begin ... end ;
TRUC3 :begin ... end ;
....
End ;
End ;
La fonction GetEnumValue fait partie de l’unité TypInfo. Il faut donc penser à faire le uses qui va bien. Pour rajouter des valeurs il suffit de compléter le type TMesTrucs. C’est certe plus complexe que le doux rêve exposé initialement, mais cela reste quand même assez simple et pratique.
