私の Delphi (2010) コードには、次の方法で DWScript に公開したクラス TImageItem があります。
dwsUnit.ExposeRTTI(TypeInfo(TImageItem),[eoNoFreeOnCleanup, eoExposePublic]);
dwsUnit で、Delphi 側から TImageItem を取得する関数を宣言しました。
function GetImage: TImageItem;
Delphi側では:
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 が発生します。
私は何を間違っていますか?オブジェクトを公開したり、間違って返したりしていますか?