Bibliothèques de types

De RAD Studio
Aller à : navigation, rechercher

Remonter à Extensions de COM


Les bibliothèques de types offrent un moyen d'obtenir davantage d'informations de type sur un objet que les interfaces de l'objet. Les bibliothèques de types contiennent les informations nécessaires sur les objets et leurs interfaces, comme les interfaces associées à tels objets (étant donné le CLSID), les fonctions membre de chaque interface et les arguments requis par ces fonctions.

Vous pouvez obtenir les informations de type en interrogeant une instance d'un objet pendant qu'elle s'exécute ou, en chargeant et en lisant les bibliothèques de types. Grâce à ces informations, vous pouvez implémenter un client qui utilise un objet souhaité, en sachant exactement les fonctions membre dont vous avez besoin, et ce qu'il faut passer à ces fonctions.

Les clients des serveurs Automation, les contrôles ActiveX et les objets transactionnels ont besoin des informations de type. Tous les experts Delphi génèrent automatiquement une bibliothèque de types (même si c'est facultatif avec l'expert objet COM). Vous pouvez visualiser et modifier ces informations de type en utilisant GenTLB.exe pour créer un fichier .tlb à partir d'un fichier RIDL.

Contenu d’une bibliothèque de types

Les bibliothèques de types contiennent des informations de type, qui indiquent quelles interfaces existent et dans quels objets COM, ainsi que le type et le nombre d'arguments des méthodes d'interface. Ces descriptions incluent les identificateurs uniques de CoClasses (CLSID) et d'interfaces (IID), pour que l'utilisateur y accède de façon correcte, ainsi que les identificateurs de répartition (dispID) pour les méthodes et propriétés d'interface Automation.

Les bibliothèques de types peuvent aussi contenir les informations suivantes :

  • Une description des informations personnalisées de type associées aux interfaces personnalisées
  • Des routines exportées par le serveur Automation ou ActiveX mais qui ne sont pas des méthodes d’interface
  • Des informations concernant l’énumération, les enregistrements (structures), les unions, les alias et les types des données des modules
  • Des références aux descriptions de types issues d’autres bibliothèques de types

Création de bibliothèques de types

Avec les outils de développement traditionnels, vous créez des bibliothèques de types en écrivant des scripts en IDL (Interface Definition Language) ou en ODL (Object Description Language), puis en compilant ces scripts. Delphi génère automatiquement une bibliothèque de types lorsque vous créez un objet COM (contrôles ActiveX, objets Automation, modules de données distant, etc.) en utilisant l'un des experts sur la page ActiveX ou la page multiniveau de la boîte de dialogue Nouveaux Eléments. Vous pouvez également créer une bibliothèque de types en cliquant sur Fichier > Nouveau > Autre, en sélectionnant le dossier ActiveX sous Projets Delphi ou Projets C++Builder, puis en choisissant Bibliothèque de types dans le volet de droite..

Remarque : Les bibliothèques de types de RAD Studio utilisent RIDL au lieu de IDL.

Vous pouvez visualiser et modifier la bibliothèque de types en utilisant l'éditeur de bibliothèque de types de Delphi. Delphi met à jour automatiquement le fichier .tlb correspondant (fichier bibliothèque de types binaire) lors de la sauvegarde de la bibliothèque de types. Si vous modifiez les interfaces et les CoClasses créées en utilisant un expert, l'éditeur de bibliothèques de types actualise également les fichiers d'implémentation.

Quand utiliser les bibliothèques de types

Il est important de créer une bibliothèque de types pour chaque ensemble d’objets qui est présenté aux utilisateurs finaux, par exemple,

  • Les contrôles ActiveX nécessitent une bibliothèque de types, qui doit être incluse en tant que ressource dans la DLL qui contient les contrôles ActiveX.
  • Les objets exposés qui gèrent la liaison de vtable des interfaces personnalisées doivent être décrits dans une bibliothèque de types car les références à la vtable sont liées à la compilation. Les clients importent depuis la bibliothèque de types les informations sur les interfaces et utilisent ces informations pour compiler. Pour plus de détails sur les vtables et les liaisons effectuées lors de la compilation, voir Interfaces d'Automation.
  • Les applications qui implémentent des serveurs Automation doivent fournir une bibliothèque de types pour que les clients puissent faire une liaison immédiate.
  • Les objets instanciés depuis des classes qui gèrent l’interface IProvideClassInfo tels que tous les descendants de la classe VCL TTypedComObject, doivent posséder une bibliothèque de types.
  • Les bibliothèques de types ne sont pas nécessaires mais utiles pour identifier les objets OLE utilisables par glisser-déposer.

Si vous définissez des interfaces à usage exclusivement interne (au sein d’une application), il n’est pas nécessaire de créer une bibliothèque de types.

Accès aux bibliothèques de types

En règle générale, une bibliothèque de types fait partie d'un fichier de ressource (.res) ou d'un fichier autonome à l'extension .tlb. Quand elle est placée dans un fichier ressource, la bibliothèque de types peut être liée à un serveur (.dll, .ocx ou .exe).

Lorsqu’une bibliothèque de types a été créée, les scruteurs d’objets, les compilateurs et les outils similaires peuvent y accéder par des interfaces spéciales :

Interfaces spéciales :

Interface Description

ITypeLib

Fournit des méthodes pour accéder à la description d’une bibliothèque de types.

ITypeLib2

Augmente ITypeLib pour inclure la gestion des chaînes de documentation, les données personnalisées et des statistiques sur la bibliothèque de types.

ITypeInfo

Fournit des méthodes pour accéder à la description d'une bibliothèque de types. Par exemple, un navigateur utilise cette interface pour extraire des informations sur les objets de la bibliothèque de types.

ITypeInfo2

Augmente ITypeInfo pour accéder à des informations supplémentaires de la bibliothèque de types, comme les méthodes d’accès aux éléments de données personnalisés.

ITypeComp

Fournit un moyen rapide d’accéder aux informations dont le compilateur a besoin lors de la liaison avec une interface.


Vous pouvez importer et utiliser des bibliothèques de types venant d'autres applications en Delphi en cliquant sur Composant > Importer un composant. La plupart des classes de la VCL employées pour les applications COM supportent les interfaces essentielles utilisées pour stocker et récupérer les informations de types à partir des bibliothèques de types et des instances actives d'un objet. La classe TTypedComObject de la VCL supporte les interfaces qui fournissent des informations de type et s'utilise comme une fondation pour l'environnement objet ActiveX.

Avantages des bibliothèques de types

Même si votre application ne nécessite pas de bibliothèque de types, considérez les avantages suivants :

  • La vérification des types peut se faire lors de la compilation.
  • Vous pouvez utiliser la liaison immédiate avec l’automation (ce qui remplace les appels par le biais de variants) et les contrôleurs qui ne gèrent pas les vtables ou les interfaces doubles peuvent coder les dispID lors de la compilation pour améliorer les performances de l’application.
  • Les scruteurs de types peuvent parcourir la bibliothèque.
  • La fonction RegisterTypeLib peut être utilisée pour recenser vos objets présentés dans la base de données de recensement.
  • La fonction UnRegisterTypeLib peut être utilisée pour désinstaller complètement la bibliothèque de types d’une application du registre.
  • L’accès local au serveur est accéléré car l’automation utilise les informations de la bibliothèque de types pour regrouper les paramètres qui sont passés à un objet d’un autre processus.
  • GenTLB.exe est un utilitaire fourni par Embarcadero qui génère un fichier .tlb à partir d'un fichier RIDL (un fichier texte intermédiaire utilisé par l'éditeur de bibliothèque de types).

Utilisation des outils de bibliothèques de types

Les outils permettant de manipuler des bibliothèques de types sont indiqués

  • L'outil TLIBIMP.EXE (importation de bibliothèque de types), qui crée des fichiers d'interface Delphi (fichiers _TLB.pas) à partir de bibliothèques de types est intégré dans l'éditeur de bibliothèques de types. TLIBIMP offre des options de configuration supplémentaires non disponibles dans l'éditeur de bibliothèques de types.
  • TRegSvr.exe est un outil pour recenser et dérecenser les serveurs et les bibliothèques de types, fourni avec Delphi. Le source de TRegSvr est disponible à partir du menu Démarrer | Programmes | Embarcadero RAD Studio Sydney | Exemples dans le répertoire \Object Pascal\VCL\tregsvr.
  • RIDL (Restricted Interface Definition Language de Embarcadero)
  • MIDL (le compilateur Microsoft IDL) compile les scripts IDL pour créer une bibliothèque de types.
  • RegSvr32.exe est un utilitaire standard de Windows pour recenser et dérecenser les serveurs et les bibliothèques de types.
  • OLEView est un outil de visualisation de bibliothèque de types disponible sur le site Web de Microsoft.

Voir aussi