Я получаю нарушения доступа от модуля 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
. Это какая-то конструкция, которую я не знаю, или это действительно вызывает нарушение доступа каждый раз, когда вызывается этот фрагмент кода?