OVH Cloud OVH Cloud

TLB : FUNCDESC & héritage

1 réponse
Avatar
mike
Bonjour,

Je tente d'écrire un viewer d'objet COM en Delphi. Je suis confronté au
problème suivant :
Quand j'énumère les fonctions d'un "ITypeInfo" en me servant
de "TypeAttr" (itération TypeAttr.cFuncs / ITypeInfo.GetFuncDesc)
je trouve les fonctions de l'interface _et_ les fonctions héritées.

La structure "FuncDesc" (description de la fonction) contient "DispID" et
"href".
via l'utilisation de :
1- succeeded(GetRefTypeInfo(href,TypeLibRef))
2- TypeLibRef.GetDocumentation(-1,@inheritedInterfaceName,...)
"inheritedInterfaceName" ne correspond pas à l'interface d'où provient la
fonction héritée.

Dans MSDN on trouve ceci :

MEMBERID identifies the member in a type description. For IDispatch
interfaces, this is the same as DISPID.
typedef DISPID MEMBERID;
Bits Value : 16-21 The nesting level of this typeinfo in the inheritance
hierarchy.

....mais je ne comprends pas comment utiliser ceci pour les fonctions.

Comment savoir si une fonction est héritée afin de n'afficher que les
fonctions
de l'interface en cours (comme le fait OleView) ?
ou
Comment trouver l'interface [dispid1,dispid2] des "fonctions directes" de
l'interfaces ?

Merci de votre aide !

Pascal

1 réponse

Avatar
mike
pour

Comment trouver l'interface [dispid1,dispid2] des "fonctions directes" de
l'interfaces ?



lire :

Comment trouver _l'intervalle_ [dispid1,dispid2] des "fonctions directes" de
l'interfaces ?

désolé; merci !

"mike" a écrit dans le message de news:
d2tmia$1k7$
Bonjour,

Je tente d'écrire un viewer d'objet COM en Delphi. Je suis confronté au
problème suivant :
Quand j'énumère les fonctions d'un "ITypeInfo" en me servant
de "TypeAttr" (itération TypeAttr.cFuncs / ITypeInfo.GetFuncDesc)
je trouve les fonctions de l'interface _et_ les fonctions héritées.

La structure "FuncDesc" (description de la fonction) contient "DispID" et
"href".
via l'utilisation de :
1- succeeded(GetRefTypeInfo(href,TypeLibRef))
2- TypeLibRef.GetDocumentation(-1,@inheritedInterfaceName,...)
"inheritedInterfaceName" ne correspond pas à l'interface d'où provient la
fonction héritée.

Dans MSDN on trouve ceci :

MEMBERID identifies the member in a type description. For IDispatch
interfaces, this is the same as DISPID.
typedef DISPID MEMBERID;
Bits Value : 16-21 The nesting level of this typeinfo in the inheritance
hierarchy.

....mais je ne comprends pas comment utiliser ceci pour les fonctions.

Comment savoir si une fonction est héritée afin de n'afficher que les
fonctions
de l'interface en cours (comme le fait OleView) ?
ou
Comment trouver l'interface [dispid1,dispid2] des "fonctions directes" de
l'interfaces ?

Merci de votre aide !

Pascal