ВУЗ:
Составители:
Рубрика:
13
Interface
IDispatch*
IDispatch
Ссылка на IDispatch или любой унас-
ледованный от него интерфейс
Interface
Iunknown*
IUnknown
Ссылка на произвольный интерфейс
VARIANT OleVariant
Вариантный тип, совместимый с OLE
Возможна поддержка пользовательских типов данных, для чего необходимо
реализовать интерфейс IRecordInfo [2].
3. Все методы должны быть процедурами или функциями , возвращающими
значение типа HRESULT и иметь соглашение о вызовах safecall.
4. Для передачи серверу массивов данных следует использовать тип
SafeArray (безопасный массив), реализованный в Delphi с помощью
массивов вариантного типа .
Кроме этого, Automation-серверы могут поддерживать еще ряд интерфейсов ,
позволяющих получать информацию о методах, обрабатывать ошибки и т. п .
Все необходимые интерфейсы реализуются VCL Delphi автоматически .
1.5. Реализация интерфейсов
Реализация (программный код ) методов интерфейса приводится, как обычно ,
при объявлении класса . Один класс может поддерживать несколько интерфей -
сов . Имена интерфейсов , реализованных в данном классе, указываются в скоб-
ках через запятую после имени класса и имени класса предка , например,
type TMyClass = class (TObject, MyInt1, MyInt2[,…])
…
end;
Каждый метод , входящий в интерфейс, должен быть одинаково объявлен два
раза: в описании интерфейса и в объявлении класса .
Чтобы избавить программиста от рутинной работы , разработчики Delphi преду-
смотрели несколько специальных классов , в которых уже реализованы рас-
смотренные нами стандартные методы интерфейсов . Программисту остается
дописать лишь те методы, которые им самим разработаны .
Класс TComObject содержит реализацию (т.е. код ) методов интерфейса IUn-
known, хранит GUID и содержит инфраструктуру для создания экземпляра
объекта с помощью фабрики классов . Его непосредственным потомком являет-
ся класс TTypedComObject, используемый для создания COM-объектов ,
поддерживающих библиотеку типов . Ниже в иерархии находится класс
TAutoObject, содержащий реализацию методов интерфейса IDispatch и
используемый при создании серверов автоматизации.
COM-серверы в Delphi удобно создавать мастерами , которые автоматически
генерируют необходимый код , содержащий объявление потомков указанных
классов (см . часть 2).
13 Interface IDispatch Ссы лка на IDispatch и ли лю бой унас- IDispatch* лед ов анны й отнего и нтерфей с Interface IUnknown Ссы лка на прои з в ольны й и нтерфей с Iunknown* VARIANT OleVariant В ари антны й ти п, сов мести мы й сOLE В оз мож на под д ерж ка польз ов ательски х ти пов д анны х, д ля чего необход и мо реали з ов ать и нтерфей сIRecordInfo [2]. 3. В семетод ы д олж ны бы ть процед урами и ли функци ями , в оз в ращ аю щ и ми з начени ети па HRESULT и и меть соглаш ени ео в ы з ов ах safecall. 4. Д ля перед ачи серв еру масси в ов д анны х след ует и спольз ов ать ти п SafeArray (без опасны й масси в ), реали з ов анны й в Delphi с помощ ью масси в ов в ари антного ти па. К роме этого, Automation-серв еры могут под д ерж и в ать ещ е ряд и нтерфей сов , поз в оляю щ и х получать и нформаци ю о метод ах, обрабаты в ать ош и бки и т.п. В сенеобход и мы еи нтерфей сы реали з ую тсяVCL Delphi ав томати чески . 1.5. Ре али заци я и нт е рф е йсов Реали з аци я (программны й код ) метод ов и нтерфей са при в од и тся, какобы чно, при объяв лени и класса. О д и н класс мож ет под д ерж и в ать несколько и нтерфей - сов . И мена и нтерфей сов , реали з ов анны х в д анном классе, указ ы в аю тся в скоб- ках через з апятую послеи мени класса и и мени класса пред ка, напри мер, type TMyClass = class (TObject, MyInt1, MyInt2[,…]) … end; К аж д ы й метод , в ход ящ и й в и нтерфей с, д олж ен бы ть од и наков о объяв лен д в а раз а: в опи сани и и нтерфей са и в объяв лени и класса. Ч тобы и з бав и ть программи ста отрути нной работы , раз работчи ки Delphi пред у- смотрели несколько специ альны х классов , в которы х уж е реали з ов аны рас- смотренны е нами станд артны е метод ы и нтерфей сов . Программи сту остается д опи сать ли ш ь теметод ы , которы еи м сами м раз работаны . К лассTComObject сод ерж и треали з аци ю (т.е. код ) метод ов и нтерфей са IUn- known, храни т GUID и сод ерж и т и нфраструктуру д ля соз д ани я экземпляра объекта спомощ ью фабри ки классов . Е го непосред ств енны м потомком яв ляет- ся класс TTypedComObject, и спольз уемы й д ля соз д ани я COM-объектов , под д ерж и в аю щ и х би бли отеку ти пов . Н и ж е в и ерархи и наход и тся класс TAutoObject, сод ерж ащ и й реали з аци ю метод ов и нтерфей са IDispatch и и спольз уемы й при соз д ани и серверов ав томати з аци и . COM-серверы в Delphi уд обно соз д ав ать мастерами , которы е ав томати чески генери рую т необход и мы й код , сод ерж ащ и й объяв лени е потомков указ анны х классов (см. часть 2).
Страницы
- « первая
- ‹ предыдущая
- …
- 11
- 12
- 13
- 14
- 15
- …
- следующая ›
- последняя »