Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   como crear un enum en delphi (https://www.clubdelphi.com/foros/showthread.php?t=45522)

luigi_cr 05-07-2007 19:34:25

como crear un enum en delphi
 
no se si se puede no soy my distro programando en delphi, en JAVA se decaran primero los tipos y despues el enum
public static final int SEASON_WINTER = 0;
public static final int SEASON_SPRING = 1;
public static final int SEASON_SUMMER = 2;
public static final int SEASON_FALL = 3;
enum Season { WINTER, SPRING, SUMMER, FALL }

gracias por la ayuda...

Caral 05-07-2007 19:46:55

Hola
Como comprenderas, de Java, no se nada, pero me suena a la declaracion de variables publicas de tipo integer y a un array (season).
Tal vez si explicas lo que quieres hacer, pueda colaborar.
Saludos

delphi.com.ar 05-07-2007 19:54:24

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!

luigi_cr 05-07-2007 20:30:00

Gracias
 
otra pregunta puedo hacer la enumeracion de Strings????

droguerman 05-07-2007 23:22:38

Código Delphi [-]
TEnumString = class
  private
       FKeys : TStrings;
       FValues : TStrings;
       procedure setString(index: string): string;
       function getString(index: string; value : string): string;
  public
       constructor create;
       property items[index : string]: string read getString write setString; default;
       function add(key, value : string): integer;
end;

constructor TEnumString.create;
begin
  FValues := TStringList.create;
  FKeys := TstringList.create;
end;

function TEnumString.add(key, value : string): integer;
begin
  FValues.add(value);
  result := FKeys.add(key);
end;

function TEnumString.getString(index: string): string;
begin
    result := FValues[FKeys.indexOf(index)] ;
end;

procedure TEnumString.setString(index: string; value : string): string;
begin
        FValues[FKeys.indexOf(index)] := value;
end;

delphi.com.ar 05-07-2007 23:37:11

Cita:

Empezado por luigi_cr
otra pregunta puedo hacer la enumeracion de Strings????

Los tipos enumerados solo pueden ser de datos ordinales... Que bien podrían ser el ídice de un array de strings :D

¿Qué es lo que quieres hacer?... ¿Para qué lo piensas utilizar?

Saludos!


La franja horaria es GMT +2. Ahora son las 11:16:43.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi