Transformer un caractère en type énuméré
Soit un type énuméré TRomain=(M,D,C,L,X,V,I)
J'extrais d'un nombre en chiffre romains un caractère, donc M ou C ou ... I
Peut-on le transformer en TRomain d'une autre manière que par une boucle sur un tableau de correspondance ?
Voici le code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
type TRomain=(M,D,C,L,X,V,I);
const
romain:array[TRomain]of char=('M','D','C','L','X','V','I');
function RomainAdArabe(nbRomain:shortstring):cardinal;
var lettre:TRomain;
car:char;
begin
for k:=length(nbRomain) downto 1 do
begin
car:=((uppercase(nbRomain)[k]));
for lettre:=M to I do if car=romain[lettre] then break;
end; |
je récupère ainsi dans lettre le type énuméré correspondant au caractère.
Mais cela me paraît un peu lourd, non ?