anchor.diff:    for i := 0 to FImplementationsList.Count -1 do
     begin
       TempShell := FImplementationsList[i] as TImplementationClassesShell;
  -    if TempShell.VendorType = VendorType then
  +    if (TempShell.VendorType = aVendorType) and (CompareText(TempShell.DatabaseVersion, aDatabaseVersion) = 0) then
       begin
         Result := TempShell.ConnectionClass.Create;
         exit;
  
positive.code:   public
      Name : String;
      VendorType : TmDatabaseVendor;
      ConnectionClass : TmDatabaseConnectionImplClass;
      QueryClass : TmDatabaseQueryImplClass;
      CommandClass : TmDatabaseCommandImplClass;
  
negative.code:   inherited Destroy;
  end;
  
  procedure TmDatabaseConnectionImplRegister.RegisterImplementations (const aName : String; const aVendorType : TmDatabaseVendor; const aDatabaseVersion : String; const aConnectionImplementationClass : TmDatabaseConnectionImplClass;
      const aQueryImplementationClass : TmDatabaseQueryImplClass; const aCommandImplementationClass : TmDatabaseCommandImplClass);
  var
    temp : TImplementationClassesShell;
  begin
    temp := TImplementationClassesShell.Create;
    temp.Name := aName;
    temp.VendorType:= aVendorType;
    temp.DatabaseVersion:= aDatabaseVersion;
    temp.ConnectionClass:= aConnectionImplementationClass;
    temp.QueryClass:= aQueryImplementationClass;
    temp.CommandClass:= aCommandImplementationClass;
    FImplementationsList.Add(temp);
  end;
  
  
  function TmDatabaseConnectionImplRegister.GetConnectionImpl(const aVendorType: TmDatabaseVendor; const aDatabaseVersion : String): TmDatabaseConnectionImpl;
  var
    i : integer;
    TempShell : TImplementationClassesShell;
  