私は自分のアプリケーションのスクリプト言語を書いていましたが、私の目標はスクリプト内のどのタイプのものもdelphiから公開できるようにすることです。私はこの作業を自動化するためにrttiを使います。クラスのようなインスタンス型の場合は、次のコードを使用してスクリプトからメソッドを見つけて呼び出します。Delphi - 名前ごとにレコードメソッドを呼び出す
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タイプがレコードタイプのための呼び出し()メソッドを提供していないので、このコードは、動作しないレコードを持ちます。レコード型からInfo.GetMethod( 'AMethod')でメソッド情報にアクセスできます。例えば
私はこのような記録を持っている:
TRecordType = record
Field1, Field2 : single;
procedure Calc(Value : integer);
end;
私はmethodNameのかmethodaddressを持っているのであれば、誰でもレコードからメソッドを呼び出すための方法を知っていますか?
[DWScript](http://code.google.com/p/dwscript/)を再開発しましたか? –
ヒントはありがたいですが、私はDWScriptを知っています。私の言語は、AObject.AFunction.AObject.DoSomethingのような構文が可能なdelphiプログラムへのスクリプト可能なインターフェイスとして意図されています。 – DragonFlyOfGold
私はDWScriptがそれをすべて行うことができると思ったが、おそらく私は間違っていると思う。 –