Cita:
Empezado por Lepe
Usa High(Tnumeros)
|
Creo que más bien sería Ord(High(Tnumeros)) + 1
Para el otro caso, la única solución que he encontardo es usando RTTI:
Código Delphi
[-]
uses
TypInfo;
function GetSetTypeCount(SetType: PTypeInfo): Integer;
var
set_ptd: PTypeData;
enum_pti: PTypeInfo;
enum_ptd: PTypeData;
begin
Assert(SetType.Kind = tkSet);
set_ptd := GetTypeData(SetType);
enum_pti := set_ptd.CompType^;
enum_ptd := GetTypeData(enum_pti);
Result := enum_ptd.MaxValue + 1;
end;
y sólo funciona si la enumeración- en este caso (uno, dos tres, cuatro, cinco) -comienza en cero y no salta elementos, es decir, para cosas como:
(uno=1, dos, tres, cuatro, cinco) ó
(uno, dos, tres=5, cuatro, cinco)
no funciona.
EDITO:
¡Ah! La función se usaría así:
Count := GetSetTypeCount(TypeInfo(TNumeros));
// Saludos