我在程序中声明了一些简单的类,例如
MyClass = class
Var1 : Integer
Var2 : Integer
end;
我想做的是在运行时获取此类(“MyClass”)中的变量列表(也许类似于组件的“GetPropList”?)
我想到了这样的事情(显然,函数“GetVarNames”不存在,但我希望这能给出这个想法),它将把“MyClass”中列出的变量名称拉入 TStringList 中的字符串:
var
MyVariableNamesList: TStringList
i : integer;
begin
MyVariableNamesList := TStringList.create;
MyVariableNamesList := GetVarNames(MyClass)
end;
有人可以建议吗?如果这是一个愚蠢的问题,请提前道歉!
最佳答案
根据您的 Delphi 版本,您可以使用新的 RTTI(在 Delphi 2010 中引入)。
你可以这样做:
function GetVarNames(const AClass : TObject) : TStringList;
var lType : TRttiType;
lContext : TRttiContext;
lProperty : TRttiProperty;
lField : TRttiField;
begin
Result := TStringList.create;
LType := lContext.GetType(AClass.ClassType);
if assigned(LType) then
begin
for LProperty in LType.GetProperties do
begin
Result.Add(lProperty.Name);
//Get current value:
Result.Add(lProperty.GetValue(AClass).ToString);
end;
for lField in LType.GetFields do
begin
Result.Add(lField.Name);
//Get current value:
Result.Add(lField.GetValue(AClass).ToString);
end;
end;
end;
关于delphi - 在运行时获取类中的变量名称列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10713555/