DWScript:从Delphi函数向脚本公开并返回对象?

DWScript:从Delphi函数向脚本公开并返回对象?,delphi,dwscript,Delphi,Dwscript,在我的Delphi(2010)代码中,我有一个类TImageItem,我通过以下方式向DWScript公开了它: dwsUnit.ExposeRTTI(TypeInfo(TImageItem),[eoNoFreeOnCleanup, eoExposePublic]); 在dwsUnit中,我声明了一个从Delphi端获取TImageItem的函数: function GetImage: TImageItem; procedure TFScript.dwsUnitFunctionsGetIma

在我的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;
在德尔福方面:

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调用期间,我收到一个带有消息“对象已销毁”的描述恐怖


我做错了什么?我是否暴露了对象或返回的对象不正确?

我不知道ExposeRTTI的情况,因为我从未使用过它,但我会这样做:

procedure TFScript.dwsUnitFunctionsGetImageEval(info: TProgramInfo);
begin
  ...
  // (Item is a TImageItem and not nil)
  Info.ResultAsVariant := Info.Vars[Info.ResultVars.TypeSym.Name].GetConstructor('Create', Item).Call.Value;
end;