Einzelnen Beitrag anzeigen

Muzel

Registriert seit: 6. Mai 2011
3 Beiträge
 
#1

Interface nur unter bestimmten Bedingungen unterstützen

  Alt 25. Jun 2015, 14:34
Gibt es eine Möglichkeit, ein Interface nur unter bestimmten Bedingungen zu unterstützen?
Ich habe es folgendermaßen versucht:
- das Interface mit seinen Methoden in meiner Klasse implementiert
- QueryInterface in der Klasse überschrieben:

function MyClass.QueryInterface (const IID: TGUID; out Obj): HResult;
begin
if IsEqualGUID (IID, ITheInterface) then
begin
// hier könnte ich meine Bedingungen prüfen
Result := E_NOINTERFACE;
Pointer(Obj) := nil;
end
else
Result := inherited QueryInterface (IID, Obj);
end;

Was ich nicht verstehe: Obwohl bei der Supports-Abfrage der Code durchlaufen wird (also E_NOINTERFACE) zurückkommt, gibt Support True zurück und das Obj ist nicht nil.
  Mit Zitat antworten Zitat