7

这是一个简单的代码:

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 := Unassigned在最后使用代码,或者V当它存在Test程序范围时将是免费的?在VB中,您将变量设置为Nothing。我们需要在这里做同样的事情吗?IE:

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;
4

1 回答 1

9

OleVariant超出范围时会自动释放接口。OleVariant如果您需要尽快发布它,您可以为它分配一个新值。

于 2011-11-29T16:54:44.493 回答