IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Delphi Discussion :

RTTI:Lister les propriétés d'une interface COM


Sujet :

Langage Delphi

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2003
    Messages : 42
    Points : 26
    Points
    26
    Par défaut RTTI:Lister les propriétés d'une interface COM
    Bonjour,
    Comme indiqué dans le titre, j'essaye de lister mes propriétés et méthode d'un objet COM avec RTTI (s'il y'a une autre méthode, je suis preneur!):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    uses typinfo;
     
    var MyObjCom: TObjCom;
    .....
     
    procedure TForm1.FormCreate(Sender: TObject);
    var
      Count, Loop: Integer;
      List: TPropList;
    begin
      Count := GetPropList(TypeInfo(TObjCom), tkAny, @List);
      Listbox1.Items.BeginUpdate;
      for Loop := 0 to Pred(Count) do
        Listbox1.Items.Add(List[Loop]^.Name);
      Listbox1.Items.EndUpdate;
    end;
    Le pb, c'est que RTTI ne me renvoie que les prop. published.
    Question: Comment renvoyer toutes les prop. ou à défaut, dans mon activex, comment mettre mes prop. et méthodes à published?

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2003
    Messages : 42
    Points : 26
    Points
    26
    Par défaut
    personne n'a une petite idée?

  3. #3
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Salut,
    le RTTI est dédié à Delphi, aux classes Delphi, pour COM je regarderais plutôt du coté de la librairie de type : ActiveX.ITypeInfo et ITypeLib

    Un exemple mais il faut creuser le code source
    http://pchapuis.developpez.com/typelibreader/

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2003
    Messages : 42
    Points : 26
    Points
    26
    Par défaut
    ok, merci beaucoup!
    Je suis en train d'éplucher le code, si ça intéresse qq'un, je posterai ma fonction.

  5. #5
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par zeprogrameur
    Je suis en train d'éplucher le code
    Dans ce cas il ne faut pas être économe de ces efforts
    Citation Envoyé par zeprogrameur
    si ça intéresse qq'un, je posterai ma fonction.
    Oui je suis preneur, j'allais faire la même chose pour la FAQ Delphi.

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2003
    Messages : 42
    Points : 26
    Points
    26
    Par défaut
    Voila, une fonction qui permet dans un objet COM, de récupérer sous la forme d'un string, les propriétés et méthodes de cet objet:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    function TMyObjCom.Get_GetListProps: String;
    var MyITypeInfo: ITypeInfo;
          MyPTypeAttr: PTypeAttr;
          MyPFuncDesc: PFuncDesc;
          MyFuncName, MyFuncDoc: WideString;
          i, GetNbProp : Integer;
    begin
      result:='';
     
      Self.GetTypeInfo(0,0,MyITypeInfo);
      MyITypeInfo.GetTypeAttr(MyPTypeAttr);
     
      //Renvoie le nb de methode...
      GetNbProp:= MyPTypeAttr^.cFuncs;
     
      for i:=0 to GetNbProp-1 do begin
              //MyPFuncDesc: pointeur de description de la methode.
              if succeeded(MyITypeInfo.GetFuncDesc(i, MyPFuncDesc)) Then
                //Le tag de la methode est recupere par MyFuncName
                if succeeded(MyITypeInfo.GetDocumentation(MyPFuncDesc^.memid, @MyFuncName, @MyFuncDoc,nil, nil)) then result:= result + MyFuncName + ';';
      end;

  7. #7
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Je suis en train de regarder ce point mais cela nécessite un peu plus de code pour accéder à ces infos.

    En tout cas merci .

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2003
    Messages : 42
    Points : 26
    Points
    26
    Par défaut
    Citation Envoyé par Laurent Dardenne
    Je suis en train de regarder ce point mais cela nécessite un peu plus de code pour accéder à ces infos.

    En tout cas merci .
    oui, la fonction est basique: elle permet juste de lister toutes les prop/methodes d'une interface, et donc on récupère celles qui sont héritées de IDispatch (Invoke....): Si on veut distinguer les prop héritées et les autres, ça nécessite + de code!

  9. #9
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut Re: RTTI:Lister les propriétés d'une interface COM
    Après réflexion j'ai une question simple à te poser :
    Citation Envoyé par zeprogrameur
    j'essaye de lister mes propriétés et méthodes d'un objet COM
    Quel est ton objectif exactement ?

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2003
    Messages : 42
    Points : 26
    Points
    26
    Par défaut Re: RTTI:Lister les propriétés d'une interface COM
    Citation Envoyé par Laurent Dardenne
    Après réflexion j'ai une question simple à te poser :
    Citation Envoyé par zeprogrameur
    j'essaye de lister mes propriétés et méthodes d'un objet COM
    Quel est ton objectif exactement ?
    Par exemple, pour une interface, j'ai une fonction qui sort dans un fichier texte la liste de toutes les propriétés d'une instance de mon interface.
    Si j'ajoute ou je retire une prop., je suis obligé de modifier cette fonction.

  11. #11
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Merci.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2003] Comment lister toutes les propriétés d'une « Shape »
    Par chould dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 20/12/2013, 23h21
  2. [Débutant] Lister les propriétés et méthodes d'une classe/un objet ?
    Par Jean-Philippe André dans le forum VB.NET
    Réponses: 10
    Dernier message: 15/02/2012, 15h20
  3. Lister les instances d'une interface
    Par maxperchus dans le forum C#
    Réponses: 2
    Dernier message: 02/05/2008, 19h57
  4. Lister les tables d'une Base
    Par YanK dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 08/10/2003, 10h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo