我爲我的應用程序編寫了一個腳本語言,我的目標是使在腳本中發佈任何類型的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