1

スクリプトで呼び出すことができるこのプロシージャを想像してみてください。

// Foo is not implemented in the Script but via Delphi
procedure Foo(ClassType: TClass); 

スクリプトは次のようになります。

type 
  TMyClass = class
  end;

Foo(TMyClass);

Fooが呼び出されると、DelphiアプリはClassTypeのInt64値を確認します。

e.g. Foo(661259635); 

DWSソースで、aTClassが明示的にに変換されていることがInt64わかります(dwsCompiler.pasを参照procedure TObjectClassTypeMethod.Execute -> Info.ResultAsInteger := Int64(info.ValueAsClassSymbol[SYS_SELF]);)。

これで、どの構造でその番号を検索して、対応するTdwsClassを見つけることができますか?

注:実際、TMyClassはスクリプトに実装されていませんが、Delphiアプリを介して公開されて作成されています...これが違いを生むかどうかはわかりません。

4

1 に答える 1

1

現在、Int64を手動でTClassSymbolにキャストし直す必要があります。変換は、参照をVariant(TClassをサポートしない)に格納するために実行されます。

TClassSymbolを入手したら、シンボルテーブルを検索するか、メンバーに移動できます。

現時点では、シンボルを分類するためのIInfoヘルパーはありません。

于 2011-08-19T13:45:40.963 に答える