Основы COM. Рудалев В.Г - 19 стр.

UptoLike

19
Добавим в этот же интерфейс метод -функцию GetSquare.
На закладке Parameters укажем имя, тип и модификатор возвращаемого па -
раметра p1, BSTR *, [out, retval].
Следует помнить :
Для создания функции один из параметров должен быть объявлен как
ссылка (символ *, например, BSTR*) с модификатором [out, ret-
val]. Это и будет значением , возвращаемым функцией .
Для создания параметра , передающегося по адресу , необходимо ука -
зать * и модификатор in .
По значению параметр передается с модификатором in.
Текст сформированной нами библиотеки типов можно посмотреть , нажав кла -
вишу F12. В дальнейшем вызвать окно библиотеки типов можно , выбрав пункт
меню View Type Library.
Если все было сделано правильно, то в библиотеке типов появится описание
дуального интерфейса , характерного для серверов автоматизации:
type ICalcSrv = interface(IDispatch)
['{80807261-88A2-11D7-941A-D22E27DF7904}']
function Get_value: WideString; safecall;
procedure Set_value(const value: WideString); safecall;
function GetSquare: WideString; safecall;
                                          19
Д обав и м в этотж еи нтерфей сметод -функци ю GetSquare.




Н а з аклад ке “Parameters” укаж ем и мя, ти п и мод и фи каторв оз в ращ аемого па-
раметра – p1, BSTR *, [out, retval].




След уетпомни ть:
      • Д лясоз д ани яфункци и од и н и з параметров д олж ен бы ть объяв лен как
        ссы лка (си мв ол *, напри мер, BSTR*) смод и фи катором [out, ret-
        val]. Э то и буд етз начени ем, в оз в ращ аемы м функци ей .
      • Д лясоз д ани япараметра, перед аю щ егосяпо ад ресу, необход и мо ука-
        з ать * и мод и фи каторin .
      • По з начени ю параметрперед аетсясмод и фи катором in.

Т екст сформи ров анной нами би бли отеки ти пов мож но посмотреть, наж ав кла-
в и ш у F12. В д альней ш ем в ы з в ать окно би бли отеки ти пов мож но, в ы брав пункт
меню View –Type Library.
Е сли в се бы ло сд елано прав и льно, то в би бли отеке ти пов появ и тся опи сани е
д уального и нтерфей са, характерного д лясерверов ав томати з аци и :
type ICalcSrv = interface(IDispatch)
   ['{80807261-88A2-11D7-941A-D22E27DF7904}']
   function Get_value: WideString; safecall;
   procedure Set_value(const value: WideString); safecall;
   function GetSquare: WideString; safecall;