Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.02.04;
Скачать: [xml.tar.bz2];

Вниз

Взаимодействие с OLE-сервером MSWORD через интерфейс сервера   Найти похожие ветки 

 
Digitman   (2002-01-18 14:01) [2]

Получить актуальный XXX_TLB.PAS для реально установленного и корректно зарегистрированного сервера автоматизации от MS
ты можешь всегда, выполнив меню Project\Import Type Library. Полученный PAS сохрани в каталоге ($DELPHI)\Imports, убери из USES ссылку на старый XXX_TLB и укажи новый XXX_TLB.

Принципиальная разница между механизмами доступа контроллеров автоматизации к интерфейсам серверов автоматизации заключается в использовании или неиспользовании т.н. механизма "маршаллинга интерфейсных вызовов объекта". Объекты, предоставляющие интерфейсы типа IDispatch, обязательно используют этот механизм (он встроен в ОС, поддерживающую технологию OLE/COM), в то время как для объектов, позволяющих вызывать методы своих интерфейсов непосредственно, этот механизм не требуется.
Такое разделение тесно связано с механизмами "раннего" (early binding) и "позднего" (late binding) связывания контроллера с сервером.
"Позднее" связывание менее производительно, но более универсально и программно независимо от сред разработки сервера и контроллера. Оно использует маршаллинг интерфейсных вызовов контроллера к серверу, всякий раз при вызове какого-либо интерфейсного метода производя разрешение имени метода в его уникальный числовой идентификатор, жестко "прошитый" разработчиком интерфейса.
"Ранее" связывание значительно более производительно, но менее универсально и требует при создании контроллера иметь описание (декларацию) интерфейса в виде того самого XXX_TLB.PAS. В этом случае компилятор будет заранее знать уникальный числовой идентификатор требуемого интерфейсного метода ЗАРАНЕЕ, и в процессе выполнения контроллера ему уже не потребуется всякий раз при необходимости вызова некоего метода сервера говорить последнему "дай мне числовой идентификатор такого-то метода, чтобы я его мог вызвать" (т.к. реально сервер идентифицирует запрашиваемый контроллером к выполнению свой метод не по имени, а по номеру метода в списке доступных методов - именно по тому самому уникальному числовому идентификатору метода).

Наиболее наглядный пример маршаллинга есть в реализации класса TDataBlockInterpreter (модуль SConnect) от Болланда. Изучив "потроха" этого класса, ты уяснишь для себя практически все, что относится к межинтерфейсным взаимодействиям контроллера и сервера автоматизации во всех его ипостасях - раннее и позднее связывание, примеры использования интерфейсов и т.п.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2002.02.04;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.004 c
1-8891
Unholy()
2002-01-16 00:39
2002.02.04
Помогите найти следующие компоненты...


1-8914
Ser
2002-01-15 03:19
2002.02.04
Delphi


1-8863
twinc
2002-01-15 16:31
2002.02.04
ListView Report


7-9014
perov
2001-10-24 16:18
2002.02.04
Убить процесс


1-8918
Baron
2002-01-17 11:33
2002.02.04
Как добавить свойство Flat к компанентам?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский