Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
5_TKP_PrCOM.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
556.03 Кб
Скачать

5.6.2.5 Библиотека типов.

При создании СОМ-объектов часто используются библиотеки типов.

Библиотека типов (Type Library) - это специальный файл, который содержит информацию о СОМ-объекте. Чтобы документировать интерфейсы объекта для пользователей, разработчик создает информацию о типах объекта с помощью специализированного языка описания интерфейса IDL (Interface Definition language). На IDL можно написать полную и точную спецификацию интерфейса объекта COM. Описания интерфейса на языке IDL очень похожи на описание на языке C++.. Они содержит список свойств, методов, интерфейсов, структур и других элементов, которые содержатся в СОМ-объекте. Библиотека типов содержит также информацию о типах данных каждого свойства и типах данных, возвращаемых методами СОМ-объекта. Файлы библиотеки типов имеют расширение *.TLB.

Например, рассмотрим использование IDL для описания гипотетического интерфейса объекта COM - корректировщика орфографии - ISpellChecker.

Допустим, ISpellChecker содержит следующие методы:

- LookUpWord - проверяет наличие в словаре слова, получает в качестве параметров слово для проверки и указатель на булевскую переменную, где будет установлен результат проверки;

- AddToDictionary - добавляет в словарь слово, получает в качестве параметра слово для добавления;

- RemoveFromDictionary - удаляет из словаря слово, получает в качестве параметра слово для удаления.

Тогда спецификация на IDL будет выглядеть следующим образом (рис 1. ):

Информация об интерфейсе оформляется в виде отдельного объекта внутри библиотеки. Для создания библиотеки типов, описанной с помощью операторов IDL, используются специальные компиляторы. Доступ к библиотеке осуществляется по clsid класса объекта. Кроме того, библиотека имеет собственный GUID, который сохраняется в системном реестре при регистрации объекта, для которого создана библиотека типов.

Каждая библиотека типов имеет интерфейс iTypeLib, который дает возможность работать с ней, как с единым объектом. Для доступа к информации об отдельном интерфейсе используется интерфейс iTypeinfo. Для доступа к библиотеке по GUID применяется функция LoadRegTypeLib. Если клиенту известно имя файла библиотеки, то можно воспользоваться функцией LoadTypeLib.

Библиотека типов может использоваться клиентами при обращении к объекту для получения начальной информации о доступных идентификаторах, интерфейсах, методах. В принципе, эти же данные можно получить и программными средствами, используя системный реестр и возможности базовых интерфейсов СОМ. Однако не всегда удобно дополнять приложение довольно сложным блоком кода из-за применения небольшого объекта для вспомогательных целей.

Следует отметить, что в Delphi при создании библиотеки типов обычно используется не язык IDL, а синтаксис языка Object Pascal. Это обусловлено тем, что при разработке библиотек типов в Delphi, как правило, не требуется их писать код вручную, так как код библиотеки типов генерируется автоматически, а для внесения необходимых изменений и дополнений используется специальный редактор библиотеки типов, работа с которым будет рассмотрена в п. 5.6.4.3 и в Приложении 1. Поэтому при разработке объектов СОМ с помощью Delphi не требуется детальных знаний синтаксиса описания интерфейсов. В то же время, код библиотеки типов, разработанной в Delphi на основе языка Object Pascal, может быть в дальнейшем при необходимости экспортирован в формат IDL, обеспечивая, тем самым, возможность применения собственных объектов в любых приложениях Windows.