想象一下这个程序,它可以在脚本中调用:
// 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来源中看到TClass
已明确转换为Int64
(请参阅dwsCompiler.pas,procedure TObjectClassTypeMethod.Execute -> Info.ResultAsInteger := Int64(info.ValueAsClassSymbol[SYS_SELF]);
)。
现在我可以在哪个结构中搜索该号码以找到相应的TdwsClass?
注意:实际上TMyClass并没有在脚本中实现,而是通过Delphi应用程序公开创建......我不知道这是否有所作为。
答案 0 :(得分:1)
您当前必须手动将Int64转换回TClassSymbol,执行转换以将引用存储在Variant中(不支持TClass)。
获得TClassSymbol后,您可以查找符号表,或导航到成员。
目前没有IInfo助手来分类符号。