I would do the following

Var
  Descendant : IFirstDecendant;
Begin
  NewObject = TNewClass.Create; //I am going with the assumption that
your 
        //NewObject is know to be an interfaced object
  If (NewObject as
IInterface).QueryInterface(IFirstDescendant,Descendant)=0 then
    //Code here for first decendant object
end;

HTH 
Ben
 

-----Original Message-----
From: Todd Martin [mailto:[EMAIL PROTECTED] 
Sent: Friday, 13 June 2003 1:53 p.m.
To: Multiple recipients of list delphi
Subject: [DUG]: Interface Inheritance

Hi

Does anyone know if there's a way to test for interface inheritance?
For example

IFirstDescendant = interface(IInterface);
ISecondDescendant = interface(IFirstDescendant);

TNewClass = class(TInterfacedObject,ISecondDescendant);

NewObject = TNewClass.Create;

is there a way to see whether NewObject supports the interface
"IFirstDescendant"

NewObject.GetInterface(IFirstDescendant,Descendant)
returns a nil pointer for Descendant.

I'm thinking the VTable entry for the ISecondDescendant interface, might
link back to IFirstDescendant somehow.

Todd.


------------------------------------------------------------------------
---
    New Zealand Delphi Users group - Delphi List - [EMAIL PROTECTED]
                  Website: http://www.delphi.org.nz
To UnSub, send email to: [EMAIL PROTECTED] 
with body of "unsubscribe delphi"
Web Archive at: http://www.mail-archive.com/delphi%40delphi.org.nz/
---------------------------------------------------------------------------
    New Zealand Delphi Users group - Delphi List - [EMAIL PROTECTED]
                  Website: http://www.delphi.org.nz
To UnSub, send email to: [EMAIL PROTECTED]
with body of "unsubscribe delphi"
Web Archive at: http://www.mail-archive.com/delphi%40delphi.org.nz/

Reply via email to