我为我的应用程序编写了一个脚本语言,我的目标是使在脚本中发布任何类型的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;
因此,没有人知道一种从记录调用一个方法,如果我有方法名或methodaddress?
您刚刚重新创建[DWScript](http://code.google.com/p/dwscript/)吗? – 2012-04-17 13:55:26
感谢您的提示,但我知道DWScript。我的语言是作为一个delphi程序的脚本接口,其结构像AObject.AFunction.AObject.DoSomething是可能的。 – DragonFlyOfGold 2012-04-17 14:05:19
我认为DWScript可以做到这一切,但也许我错了 – 2012-04-17 14:15:19