Распределенные приложения: контроллеры автоматизации. Часть 2. Фертиков В.В. - 18 стр.

UptoLike

Составители: 

18
тупной информацию о типах на этапе компиляции. Другими словами, исполь-
зуя библиотеку типов в двоичном формате, среда программирования автомати-
чески генерирует исходный текст на соответствующем языке программирова-
ния (Object Pascal или C++) специальных модулей , на которые можно будет
ссылаться из остальных модулей , составляющих проект. Такая процедура имеет
общее название (из терминологии распределенных вычислений ) отображе-
ние к языку программирования.
Изучение библиотеки типов незнакомого сервера автоматизации мы ре-
комендуем начинать с ее просмотра в редакторе библиотеки типов. Поскольку
речь идет о Delphi, а редактор интегрирован в среду программирования, проще
всего открыть библиотеку типов во время разработки клиентского проекта: ме-
ню File Open и указать файл библиотеки в двоичном формате (можно файл
*.EXE приложения для Windows). Давайте, как и раньше, экспериментировать
с приложениями Microsoft Office. В данном случае важна версия: дальнейшие
конкретные примеры рассматривают версию 2000, однако общая методика от
версии, разумеется, не зависит .
Итак , начнем с изучения библиотеки типов Microsoft Word, открыв файл
MSWORD9.OLB, в котором она размещена. Первое, что нужно сделать это уз-
нать, какие объекты автоматизации экспортирует сервер . В библиотеке типов
каждый объект описан при помощи так называемого сопряженного класса
(CoClass). В нашем случае можно обнаружить, что сервер реализует целый ряд
объектов: Global, Application, Document, Font и др. (см . рисунок ниже).
Для объектов, которые предполагается использовать, необходимо выяснить, ка-
кие интерфейсы каждый из них реализует . Например , объект Application, без
использования которого невозможно обойтись, реализует показанные на ри-
сунке интерфейсы , причем , интерфейс _Application описан , как интерфейс
по умолчанию. Последняя информация чрезвычайно важна для программистов,
планирующих связываться с объектом через интерфейс IDispatch, поэтому на
данный факт также целесообразно обращать внимание в первую очередь.
После изучения необходимых сопряженных классов можно переходить к
реализуемым ими интерфейсам . Вкладка Text редактора содержит автоматиче-
ски сгенерированный фрагмент описания библиотеки типа на стандартном язы -
ке IDL, причем , представленный фрагмент относится к выбранному на дереве
слева узлу. Например , так выглядит описание интерфейса _Application (в
сильном сокращении):
[
uuid(00020970-0000-0000-C000-000000000046),
version(8.1),
helpcontext(0x00000970),
hidden,
dual,
nonextensible,
oleautomation
]
                                    18
тупной информацию о типах на этапе компиляции. Другими словами, исполь-
зуя библиотеку типов в двоичном формате, среда программирования автомати-
чески генерирует исходный текст на соответствующем языке программирова-
ния (Object Pascal или C++) специальных модулей, на которые можно будет
ссылаться из остальных модулей, составляющих проект. Такая процедура имеет
общее название (из терминологии распределенных вычислений) – отображе-
ние к языку программирования.
      Изучение библиотеки типов незнакомого сервера автоматизации мы ре-
комендуем начинать с ее просмотра в редакторе библиотеки типов. Поскольку
речь идет о Delphi, а редактор интегрирован в среду программирования, проще
всего открыть библиотеку типов во время разработки клиентского проекта: ме-
ню File→Open и указать файл библиотеки в двоичном формате (можно файл
*.EXE приложения для Windows). Давайте, как и раньше, экспериментировать
с приложениями Microsoft Office. В данном случае важна версия: дальнейшие
конкретные примеры рассматривают версию 2000, однако общая методика от
версии, разумеется, не зависит.
      Итак, начнем с изучения библиотеки типов Microsoft Word, открыв файл
MSWORD9.OLB , в котором она размещена. Первое, что нужно сделать – это уз-
нать, какие объекты автоматизации экспортирует сервер. В библиотеке типов
каждый объект описан при помощи так называемого сопряженного класса
(CoClass). В нашем случае можно обнаружить, что сервер реализует целый ряд
объектов: Global, Application, Document, Font и др. (см. рисунок ниже).
Для объектов, которые предполагается использовать, необходимо выяснить, ка-
кие интерфейсы каждый из них реализует. Например, объект Application , без
использования которого невозможно обойтись, реализует показанные на ри-
сунке интерфейсы, причем, интерфейс _Application описан, как интерфейс
по умолчанию. Последняя информация чрезвычайно важна для программистов,
планирующих связываться с объектом через интерфейс IDispatch , поэтому на
данный факт также целесообразно обращать внимание в первую очередь.
      После изучения необходимых сопряженных классов можно переходить к
реализуемым ими интерфейсам. Вкладка Text редактора содержит автоматиче-
ски сгенерированный фрагмент описания библиотеки типа на стандартном язы-
ке IDL, причем, представленный фрагмент относится к выбранному на дереве
слева узлу. Например, так выглядит описание интерфейса _Application (в
сильном сокращении):
[
    uuid(00020970-0000-0000-C000-000000000046),
    version(8.1),
    helpcontext(0x00000970),
    hidden,
    dual,
    nonextensible,
    oleautomation
]