这是一个简单的代码:
procedure Test; var V: OleVariant; begin V := CreateOleObject('ADOX.Catalog'); try // do something with V... finally V := Unassigned; // do we need this? end; end;
我们是否需要在结尾处使用V:=未分配的代码,或者当测试程序的范围存在时,V是否是免费的?
在VB中,您将变量设置为Nothing.我们需要在这做同样的事吗?
即:
function VarNothing: IDispatch; // emulate VB function SET VarX = Nothing var Retvar: IDispatch; begin Retvar := nil; Result := Retvar; end; // do something with V and finally: V := VarNothing;
解决方法
OleVariant将在超出范围时自动释放界面.如果需要尽快发布,可以为OleVariant分配一个新值.