Dear Todd My understanding is that interfaces inherit transparently (as you would expect). QueryInterface should give you the answer you need.
A return result of 0 means success. An additional benefit is it does a safe cast for you at the same time. e.g. if NewObject.QueryInterface(IFirstDescendant, tmp) <> 0 then raise exception.Create('Invalid FirstDecebdant object') else begin tmp.foo; end; Stephen > -----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/