Typbibliotheken

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu COM-Erweiterungen


Typbibliotheken bieten eine Möglichkeit, umfangreichere Typinformationen zu einem Objekt zu erhalten, als über ein Objekt-Interface ermittelt werden können. Die in Typbibliotheken enthaltenen Typinformationen liefern benötigte Informationen über Objekte und deren Interfaces, z.B. die Auskunft, welche Interfaces für welche (anhand der CLSID identifizierten) Objekte vorhanden sind, welche Elementfunktionen für jedes Interface existieren und welche Argumente für diese Funktionen benötigt werden.

Sie können Typinformationen entweder durch Abfragen einer gerade ausgeführten Instanz eines Objekts oder durch Laden und Lesen von Typbibliotheken abrufen. Diese Informationen ermöglichen Ihnen das Implementieren eines Clients, der ein bestimmtes Objekt verwenden soll, wobei Sie im einzelnen wissen, welche Elementfunktionen benötigt werden und was an diese Elementfunktionen übergeben werden muss.

Die Clients von Automatisierungsservern und ActiveX-Steuerelementen erwarten, dass solche Typinformationen zur Verfügung stehen. Alle Delphi-Experten generieren automatisch eine Typbibliothek (nur beim Experten für COM-Objekte ist dies optional). Sie können diese Art von Informationen anzeigen und ändern, indem Sie das Hilfsprogramm GenTLB.exe zum Erstellen einer .tlb-Datei aus einer RIDL-Datei verwenden.

Der Inhalt von Typbibliotheken

Typbibliotheken enthalten Typinformationen, die Folgendes angeben: die Interfaces, die in den einzelnen COM-Objekten vorhanden sind, sowie die Typen und die Anzahl der Argumente für die zugehörigen Interface-Methoden. Diese Beschreibungen enthalten die eindeutigen Bezeichner für die Hilfsklassen (CLSIDs) und für die Interfaces (IIDs), so dass ordnungsgemäß auf diese zugegriffen werden kann, sowie die Weiterleitungsbezeichner (dispIDs) für die Methoden und Eigenschaften der Automatisierungs-Interfaces.

Typbibliotheken enthalten ferner die folgenden Informationen:

  • Beschreibungen von individuellen Typinformationen, die benutzerdefinierten Interfaces zugeordnet sind.
  • Routinen, die durch den Automatisierungs- oder ActiveX-Server exportiert werden, aber keine Interface-Methoden sind.
  • Informationen über die Datentypen für Aufzählungen, Records (Strukturen), Unions, Aliase und Module.
  • Verweise auf Typbeschreibungen aus anderen Typbibliotheken.

Erzeugen von Typbibliotheken

Mit herkömmlichen Entwicklungs-Tools werden zum Erzeugen von Typbibliotheken Skripts in der IDL (Interface Definition Language) oder der ODL (Object Description Language) geschrieben und dann compiliert. Delphi generiert Typbibliotheken jedoch automatisch, wenn Sie ein COM-Objekt erzeugen (einschließlich ActiveX-Elemente, Automatisierungsobjekte, externe Datenmodule usw.) und dabei einen der Experten von der Seite ActiveX oder Multi-Tier aus dem Dialogfeld Objektgalerie verwenden. Sie können eine Typbibliothek auch erzeugen, indem Sie Datei > Neu > Weitere klicken, den Ordner ActiveX unter Delphi-Projekte öffnen und im rechten Bereich Typbibliothek auswählen.

Hinweis: Typbibliotheken in RAD Studio verwenden RIDL anstelle von IDL.

Anschließend können Sie die Typbibliothek mit Hilfe des Typbibliothekseditors von Delphi anzeigen und bearbeiten. Delphi aktualisiert die zugehörige .tlb-Datei (binäre Typbibliotheksdatei) automatisch, wenn die Typbibliothek gespeichert wird. Bei Änderungen an Interfaces und Hilfsklassen (CoClasses) durch einen Experten aktualisiert der Typbibliothekseditor auch die Implementierungsdateien.

Wann werden Typbibliotheken eingesetzt?

Es ist wichtig, für jede Gruppe von Objekten, die für externe Benutzer bereitgestellt werden, eine Typbibliothek zu erzeugen. Beispiele:

  • Für ActiveX-Elemente wird eine Typbibliothek benötigt, die sich als Ressource in derjenigen DLL befinden muss, welche die ActiveX-Elemente enthält.
  • Objekte, welche die V-Tabellen-Bindung (vtable-Bindung) von benutzerdefinierten Interfaces unterstützen, müssen in einer Typbibliothek beschrieben sein, weil V-Tabellen-Referenzen während des Compilierens benötigt werden. Clients importieren Informationen über die Interfaces aus der Typbibliothek und benutzen diese Angaben zum Compilieren. Einzelheiten über V-Tabellen und Bindung während des Compilierens finden Sie unter Automatisierungs-Interfaces.
  • Anwendungen, die Automatisierungs-Server implementieren, müssen eine Typbibliothek zur Verfügung stellen, so dass Clients eine frühe Bindung vornehmen können.
  • Für Objekte, die aus Klassen instantiiert werden, die das Interface IProviderClassInfo unterstützen, wie z.B. alle Nachkommen der VCL-Klasse TTypedComObject, muss eine Typbibliothek vorhanden sein.
  • Typbibliotheken sind zur Identifizierung der zum OLE-Drag&Drop verwendeten Objekte zwar nicht unbedingt erforderlich, aber doch hilfreich.

Wenn Sie Interfaces definieren, die nur für die interne Verwendung (innerhalb einer Anwendung) vorgesehen sind, brauchen Sie keine Typbibliothek zu erzeugen. .

Zugriff auf Typbibliotheken

Die binäre Typbibliothek ist normalerweise Bestandteil einer Ressourcendatei (.RES) oder eine eigenständige Datei mit der Dateinamenserweiterung .TLB. Ist sie in einer Ressourcendatei enthalten, kann die Typbibliothek an einen Server gebunden werden (.DLL, .OCX oder .EXE).

Sobald eine Typbibliothek erzeugt wurde, können Objekt-Browser, Compiler und ähnliche Tools über spezielle Typ-Interfaces darauf zugreifen:

Spezielle Typ-Interfaces:

Interface Beschreibung

ITypeLib

Stellt Methoden für den Zugriff auf eine Bibliothek mit Typbeschreibungen zur Verfügung.

ITypeLib2

Erweitert ITypeLib, um Unterstützung für Dokumentationsstrings, benutzerdefinierte Daten und statistische Angaben über die Typbibliothek einzubinden.

ITypeInfo

Liefert Beschreibungen individueller Objekte, die in einer Typbibliothek enthalten sind. Beispielsweise verwendet ein Browser dieses Interface zum Extrahieren von Informationen über Objekte aus der Typbibliothek.

ITypeInfo2

Erweitert ITypeInfo, um den Zugriff auf weitere Typbibliotheksinformationen zu ermöglichen, einschließlich Methoden für den Zugriff auf benutzerdefinierte Datenelemente.

ITypeComp

Bietet eine schnelle Möglichkeit zum Zugriff auf Informationen, die Compiler beim Binden an ein Interface benötigen.


Sie können Typbibliotheken aus anderen Anwendungen in Delphi importieren und verwenden, indem Sie auf die Schaltfläche Komponente > Komponente importieren klicken. Die meisten VCL-Klassen, die für COM-Anwendungen verwendet werden, unterstützen diese grundlegenden Interfaces, mit denen Informationen aus Typbibliotheken und von gerade ausgeführten Instanzen eines Objekts gespeichert und abgerufen werden. Die VCL-Klasse TTypedComObject unterstützt Interfaces, welche Typinformationen zur Verfügung stellen, und wird als Grundlage für das ActiveX-Objekt-Framework verwendet.

Die Vorteile von Typbibliotheken

Auch wenn für Ihre Anwendung keine Typbibliothek erforderlich ist, bietet ihr Einsatz folgende Vorteile:

  • Die Typprüfung kann bereits während des Compilierens ausgeführt werden.
  • Sie können die frühe Bindung für die Automatisierung verwenden. Controller, die keine V-Tabellen oder duale Interfaces unterstützen, können die Verschlüsselung der dispIDs während des Compilierens vornehmen und so die Ausführungsgeschwindigkeit zur Laufzeit verbessern.
  • Mit Hilfe von Typ-Browsern kann die Bibliothek durchsucht werden, so dass die Objektmerkmale für die Clients sichtbar werden.
  • Mit der Funktion RegisterTypeLib können die ausgewiesenen Objekte registriert werden.
  • Mit Hilfe der Funktion UnRegisterTypeLib können Sie die Typbibliothek einer Anwendung aus der Systemregistrierung entfernen (deinstallieren).
  • Der Zugriff auf lokale Server wird verbessert, weil die OLE-Automatisierung Informationen aus der Typbibliothek verwendet, um die Parameter zu packen, die in einem anderen Prozess an das Objekt übergeben werden.
  • GenTLB.exe ist ein Hilfsprogramm von Embarcadero, das eine .tlb-Datei aus einer RIDL-Datei (eine textbasierte Zwischendatei, die vom Typbibliothekseditor verwendet wird) erzeugt.

Tools für Typbibliotheken

Im Folgenden sind die Tools zum Arbeiten mit Typbibliotheken aufgeführt.

  • Mit TLIBIMP.EXE (Type Library Import) werden aus vorhandenen Typbibliotheken Delphi-Interface-Dateien (_TLB.pas) erzeugt. Dieses Tool ist in den Typbibliothekseditor integriert. TLIBIMP besitzt zusätzliche Konfigurationsoptionen, die nicht im Typbibliothekseditor verfügbar sind.
  • TRegSvr.exe ist ein Tool zum Registrieren und zum Aufheben der Registrierung von Servern und Typbibliotheken, das Bestandteil von Delphi ist. Der Quelltext von TRegSvr ist unter Start | Programme | Embarcadero RAD Studio Alexandria | Beispiele in dem Verzeichnis \Object Pascal\VCL\tregsvr verfügbar.
  • RIDL (Embarcadero Restricted Interface Definition Language)
  • Der Microsoft IDL-Compiler (MIDL) compiliert IDL-Skripts und erstellt daraus eine Typbibliothek.
  • RegSvr32.exe (ein Standard-Hilfeprogramm von Windows) dient zum Registrieren und zum Aufheben der Registrierung von Servern und Typbibliotheken.
  • OLEView ist ein Typbibliotheks-Browser, den Sie auf der Website von Microsoft finden.

Siehe auch