我为我的应用程序编写了一种脚本语言,我的目标是使从 delphi 中发布任何类型的脚本成为可能。我使用 rtti 来自动化这个任务。对于像类这样的任何实例类型,我使用以下代码从脚本中查找和调用方法。
var Info : TRttiType;
Meth : TRttiMethod;
Param : TArray<TValue>;
Result : TValue;
AnyClass : TClass;
begin
...
Info := RttiContext.GetType(AnyClass);
Meth := Info.GetMethod('AMethod');
Setlength(Param, 1);
Param[0] := TValue.From<Integer>(11);
Result := Meth.Invoke(ClassInstance, Param);
...
end;
但是对于记录,此代码不起作用,因为 TRttiMethod 类型不为记录类型提供 Invoke() 方法。我可以通过 Info.GetMethod('AMethod') 从记录类型访问方法信息。
例如我有这样的记录:
TRecordType = record
Field1, Field2 : single;
procedure Calc(Value : integer);
end;
那么如果我有方法名或方法地址,有人知道从记录中调用方法的方法吗?