Освобождение OleVariant после использования CreateOleObject - PullRequest
6 голосов
/ 29 ноября 2011

Вот простой код:

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. мы должны сделать то же самое здесь? то есть:

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;

1 Ответ

9 голосов
/ 29 ноября 2011

OleVariant автоматически отключит интерфейс, когда он выйдет из области видимости. Вы можете назначить новое значение для OleVariant, если вам нужно, чтобы оно было выпущено раньше.

...