DWScript:从Delphi函数向脚本公开并返回对象?
在我的Delphi(2010)代码中,我有一个类TImageItem,我通过以下方式向DWScript公开了它: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
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;