Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Cantidad de elementos de un tipo set (https://www.clubdelphi.com/foros/showthread.php?t=20362)

febito 13-04-2005 18:21:54

Cantidad de elementos de un tipo set
 
Hola necesito ayuda para saber como averiguar la cantidad de elementos que tiene un type "set"
Gracias a todos.

Lepe 13-04-2005 18:39:19

Depende de como esté declarado:

Código Delphi [-]
type TNumeros = (uno=0, dos, tres, cuatro, cinco);
type TSetNumeros = set of Numeros;
Usa High(Tnumeros)

Código Delphi [-]
type TNumeros = set of (uno, dos, tres, cuatro, cinco);
Para este caso no sabría decirte :(

Espero te sirva.

roman 13-04-2005 20:53:41

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

Lepe 14-04-2005 10:06:06

Muchas gracias por la correccion roman.

ahh.. por cierto, ese código es delphi ?? :D :D

Un saludo


La franja horaria es GMT +2. Ahora son las 02:20:05.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi