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
public
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.