在我的 Delphi (2010) 代码中,我有一个 TImageItem 类,我通过以下方式向 DWScript 公开了它:
dwsUnit.ExposeRTTI(TypeInfo(TImageItem),[eoNoFreeOnCleanup, eoExposePublic]);
在 dwsUnit 中,我声明了一个从 Delphi 端获取 TImageItem 的函数:
function GetImage: TImageItem;
在德尔福方面:
procedure TFScript.dwsUnitFunctionsGetImageEval(info: TProgramInfo);
begin
...
// (Item is a TImageItem and not nil)
Info.ResultAsVariant := TdwsRTTIVariant.FromObject(Item);
end;
但是,当我运行以下脚本时:
var Item: TImageItem;
Item := GetImage;
...
我在 GetImage 调用期间收到 EScriptError 消息“对象已销毁”。
我究竟做错了什么?我是在暴露对象还是错误地返回它?