Cita:
Empezado por elrayo76
El tema es que nadie me dice como...
|
El tema es que no se puede porque has/han complicado tanto las cosas que ahora estás en un callejón sin salida. El problema es por un mal diseño de los tipos, no por el lenguaje. Delphi es así para obligarte a pensar las cosas bien desde un principio. Todo ordenado y cada animal en su jaula.
El hecho de tener un
Tipo de Datos (piensa en un "Tipo" como si fueran jaulas de distinto tamaño para distintos animales) y ahora quieres meter un Elefante en la jaula de una tortuga [...]. Eso es la señal que estás haciendo las cosas mal. Lo siento, toca pensar las cosas de nuevo.
En C++ no hay "tamaños de jaulas", agrandas la jaula a voluntad y la disminuyes sobre la marcha...eah! todo junto y revuelto
. Y esto mismo es lo que evita Delphi por el fuerte tipificado de datos. Te obliga a separar churras (TEnum1) de meninas (TEnum2).
¿te das cuenta que tienes la solución con un simple número entero y descripción? Así como se hacía en los años 80:
- del 0 al 100 son errores de base de datos (TEnum1)
- del 101 al 200 son errores de memoria (TEnum2)
Código Delphi
[-]
procedure ( Enum : integer);
begin
end;
Pero no, quieres tener 2 tipos de datos (que al final son números enteros de 0 hasta 255) para después, por técnicas complejas (como RunTime Type Information), volver a tener el nombre/texto de ese valor... WTF!! o mejor dicho: KISS (Keep It Simple Stupid!)
Todo esto viene porque los requerimientos que estás pidiendo, fuerzan a cambiar las especificaciones iniciales. YA No necesitas un Tipo enumerado, quizás una clase que tenga dos cosas como "código de error" y "Descripción", o quizás "valor" y "clase de error" ... Incluso puede que sirva un "Array de record"
Saludos