1) ¿Alguien sabe si es posible colocar a través de una enumeración irregular en Delphi (XE)?Bucle a través de la enumeración irregular en Delphi
Looping sobre una enumeración normal está bien. De Delphi Basics:
var
suit : (Hearts, Clubs, Diamonds, Spades);
begin
// Loop 3 times
For suit := Hearts to Diamonds do
ShowMessage('Suit = '+IntToStr(Ord(suit)));
end;
Pero, si 'traje' en su lugar se declara como
var
suit : (Hearts=1, Clubs, Diamonds=10, Spades);
se realiza un bucle 10 veces. No es sorprendente, pero me gustaría hacer un bucle 3. La única solución que he encontrado hasta ahora es convertir una enumeración en un conjunto y usar el bucle 'for ... in' como en delphi.about.com.
Entonces, si la respuesta a la pregunta 1) es no, entonces:
2) ¿Cómo convertir de enumeración a establecer en Delphi?
El contexto en el que lo estoy usando es una matriz de componentes de cuadros de edición (TEdit) que tiene una numeración irregular (edición1, edición5, edición7, edición3, ...). Si bien es posible reordenar todas las cajas de edición, se elimina la razón de usar la enumeración como una forma flexible de permitir la adición de una caja de edición en el medio de la enumeración.
¿Por qué no puede usar algún descendiente 'TList' y iterar sobre eso? –
La enumeración se usará como índice en matrices de TLabels, TEdits y Strings para que pueda usar StringArray [Job]: = Editbox [Job]. TList podría funcionar, pero el objetivo era facilitar la lectura del código fuente mediante el uso de enumeraciones (irregulares) como índices, como HashMap en Java. Lo que veo ahora probablemente no funcione ... – Truls
¿Has intentado utilizar XEs RTTI? El RTTI ordinario de la unidad 'TypInfo' falla miserablemente. Aparentemente no se puede obtener 'TypeInfo()' en una enumeración irregular, también probé con un conjunto y las violaciones de acceso me dieron acceso. –