Ver Mensaje Individual
  #1  
Antiguo 03-03-2007
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Reputación: 25
Delphius Va camino a la fama
¿Como recorrer un conjunto?

Buenas foristas...

Esta pregunta es, segurísimo, una tontera (y me siento como un tarado con sólo preguntarla) pero no le encuentro vuelta.

La situación es esta: manejos de conjuntos y tipos enumerados.
Bueno, tengo un tipo enumerado:

// Si bien los nombres no son esos... el ejemplo es válido
TEnum = (eUno = 1, eDos = 2, eTres = 3, eCuatro = 4,... eOcho = 8);

TSetEnum = set of TEnum.

Hasta alli se entiende.

Tengo un procedimiento que debe recibir como parámetro un TSetEnum, y por cada elemento del conjunto debo realizar operaciones, que si bien son similares... debo ir manteniendo dicha sumatoria. Es decir, sumar todos los resultados.

La pregunta es: ¿Cómo puedo recorrer el conjunto y dependiendo del valor que vaya leyendo hacer la operatoria indicada?Es decir lo que quiero conseguir es:

Código Delphi [-]
sum := 0;
for {cada elemento del conjunto} do
  begin
    case {elemento del conjunto} of
      eUno: begin
              {operatoria...}
              inc(sum,resultado);
            end;
      ...
      eOcho: begin
             end;
    end; //case
  end;

Lo que se pretende conseguir es que el usuario ingrese una cantidad arbitraria de operaciones (es por eso el TSetEnum). Y que se regrese el resultado.
Ha decir verdad... ha pesar de haber trabajado con conjuntos (no mucho... pero algo), nunca tuve que recorrerlo... Estaba pensando en la posibilidad de usar un array dinámico, pero no le veo sentido usar un array (crearlo, liberarlo, darle tamaño)... si a lo mejor se puede hacer con un simple conjunto. Claro está... que si el conjunto se ingresa vacio no se hace nada. Me puse a ver la ayuda (y vaya que es escasa) y no encontré algo que me diga como se podría recorrer un conjunto.

Me he enterado por gente de Sam Sistemas (representantes de Borland en Argentina) que me comentaban que en la versión 2006 se puede hacer un:

Código Delphi [-]
for in Conjunto do

Pero... ¡porqué no lo pusieron antes!

Espero no haber dicho algo tonto...
Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita