Lo que has dicho no es ninguna tontería, de hecho no tiene solución inmediata.
Para poder usar esto, no puede haber saltos en el tipo Enum, es decir:
Código Delphi
[-]TEnum = (eUno = 1, eDos = 2, eTres = 8, eCuatro = 9);
no puedes dar valores no consecutivos a los índices, normalmente se hace así:
Código Delphi
[-]TEnum = (eUno = 1, eDos , eTres , eCuatro);
así el compilador le dará valores correlativos sin saltos. Después puedes usar algo así:
Código Delphi
[-]
var I:TEnum;
conjunto : TSetEnum;
begin
conjunto := [eUno, eDos]
sum := 0;
for i:= Low(TEnum) to High(TEnum) do
if i in conjunto then
El conjunto no puedes recorrerlo, como mucho, puedes recorrer el tipo enumerado.
EDITO:
román, ¿no deberías estar ya en la cama?
Saludos