首页 > 解决方案 > delphi 如何将未知类作为参数传递?

问题描述

我在这里有这个代码:

type
  TMyColors = (mcWhite, mcRed, mcBlue);
  TMyFields = (mfField1, mfField2, mfField3);
....
implementation

uses
  TypInfo;
{$R *.dfm}

function Get_ClassFieldName(ATypeKind: TUnknown_Class; ADataIndex: Byte):string;
begin
  Result := GetEnumName(System.TypeInfo(ATypeKind), Ord(ATypeKind(ADataIndex)));
end;

procedure TForm1.Btn_1Click(Sender: TObject);
begin
  ShowMessage(Get_ClassFieldName(TMyColors, 0) + ' | ' + Get_ClassFieldName(TMyFields, 0));
end;

如果可能的话,我想要的是用正确的参数替换我的TUnknown_Class参数。

标签: classdelphivclrtti

解决方案


看起来您只需要使用 TRttiEnumerationType.GetName()。

type
  TMyColors = (mcWhite, mcRed, mcBlue);
  TMyFields = (mfField1, mfField2, mfField3);
implementation
uses
  TypInfo,RTTI;
{$R *.dfm}

procedure TForm1.Btn_1Click(Sender: TObject);
var st1,st2  : string;
    MyColors : TMyColors;
    MyFields : TMyFields;
begin
 MyColors:=mcRed;
 MyFields:=mfField3;
 st1:=TRttiEnumerationType.GetName(MyColors);
 st2:=TRttiEnumerationType.GetName(MyFields);
 ShowMessage( st1+ ' | ' + st2);
end;

推荐阅读