Simplemente puedes definir un tipo enumerado, y el compilador decidirá según los datos de la enumeración el espacio a reservado de la variable:
Código Delphi
[-]
uses
SysUtils, Dialogs;
type
TEnumeracion1 = (Valor1 = 1, Valor2 = 2, Valor3 = 3);
TEnumeracion2 = (eValor1 = 1, eValor2 = 2, eValor3 = 30000);
begin
ShowMessageFmt('Enum1: %d, Enum2: %d', [SizeOf(TEnumeracion1), SizeOf(TEnumeracion2)]);
end.
Es bueno saber, que como las variables son representadas por tipos numéricos estándard, pueden contener algun valor que no este definido en la enumeración:
Código Delphi
[-]
type
TEnumeracion = (Valor1 = 5, Valor2 = 27, Valor3 = 60);
var
C: TEnumeracion;
begin
C := TEnumeracion(70);
ShowMessage(IntToStr(Integer(C)));
end.
Si no defines los valores de la enumeración, serán correlativos iniciando de cero:
Código Delphi
[-]type
TEnumeracion = (Valor1, Valor2, Valor3);
begin
ShowMessageFmt('Valor 1: %d, Valor 2: %d, Valor 3: %d', [Integer(Valor1), Integer(Valor2), Integer(Valor3)]);
end.
o del último valor asignado:
Código Delphi
[-]
type
TEnumeracion = (Valor1 = 100, Valor2, Valor3);
begin
ShowMessageFmt('Valor 1: %d, Valor 2: %d, Valor 3: %d', [Integer(Valor1), Integer(Valor2), Integer(Valor3)]);
end.
Saludos!