Не следует ли при вызове Free для ссылки на объект, для которой установлено значение nil, вызывать нарушение прав доступа каждый раз, когда он вызывается?

Я получаю нарушения доступа от модуля DBXCommon.pas (в Delphi XE ). Когда я смотрю на код, я вижу что-то вроде следующего (под восклицательными знаками):

function TDBXConnectionFactory.GetConnection(const DBXContext: TDBXContext;
  const ConnectionProperties: TDBXProperties): TDBXConnection;
var
  ConnectionBuilder:  TDBXConnectionBuilder;
  DelegatePath:       TDBXDelegateItem;
  Connection:         TDBXConnection;
  CombinedProperties: TDBXProperties;
begin
  //...
  ConnectionBuilder := TDBXConnectionBuilder.Create;
  Connection        := nil;
  try
    //..lots of setting ConnectionBuilder properties
    ConnectionBuilder.FInputPassword := CombinedProperties[TDBXPropertyNames.Password];
    Connection := ConnectionBuilder.CreateConnection;
    Connection.Open;
    Result     := Connection;
!!  Connection := nil;
  finally
!!  Connection.Free;
    ConnectionBuilder.Free;
  end;
end;

Но я вижу такие конструкции (сначала назначьте Nil, затем Free) гораздо больше в DBXCommon.pas . Это какая-то конструкция, которую я не знаю, или это действительно вызывает нарушение доступа каждый раз, когда вызывается этот фрагмент кода?

7
задан Marcus Adams 21 December 2011 в 15:06
поделиться