Ver Mensaje Individual
  #3  
Antiguo 13-06-2015
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Reputación: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
elrayo76,

Cita:
Empezado por elrayo76
...necesito es ver como se puede hacer para pasar por parámetro en una función un enumerado genérico...similar a lo que permite C#...


Revisa este código:
Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

  TEnumA = (A1=10, A2=11, A3=12, A4=13, A5=14);
  TEnumB = (B1=20, B2=21, B3=22, B4=23, B5=24);
  TEnumC = (C1=30, C2=31, C3=32, C4=33, C5=34);
  TEnumD = (D1=40, D2=41, D3=42, D4=43, D5=44);
  TEnumE = (E1=50, E2=51, E3=52, E4=53, E5=54);

var
  Form1: TForm1;

implementation

{$R *.dfm}

function SumEnumValue(const EnumValue : Array of Variant) : Integer;
var
   i : Integer;

begin

   Result := 0;

   for i := Low(EnumValue) to High(EnumValue) do
      Result := Result + EnumValue[i];

end;

procedure TForm1.Button1Click(Sender: TObject);
var
   TotEnumValue : Integer;

begin

   TotEnumValue := SumEnumValue([A1,B1,C1,D1,E1,
                                 A2,B2,C2,D2,E2,
                                 A3,B3,C3,D3,E3,
                                 A4,B4,C4,D4,E4,
                                 A5,B5,C5,D5,E5
                                ]);

   MessageDlg(Format('Sumatoria EnumValues = %d',[TotEnumValue]),mtInformation,[mbOK],0);

end;

end.
El código anterior en Delphi 7 sobre Windows 7 Profesional x32, Ejemplifica como pasar a una función N cantidad de valores de tipo Enumerado por medio de un Arreglo Dinámico de tipo Variant, como se muestra en la siguiente imagen:



Espero sea útil

Nelson.

Última edición por nlsgarcia fecha: 13-06-2015 a las 17:33:28.
Responder Con Cita