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

UptoLike

20
property value: WideString read Get_value write
Set_value;
end;
Реализация интерфейса
Нажмем кнопку Refresh Implementation. Сформируется (или обновится) текст
библиотеки типов . Появится новый модуль Unit1.pas. Сохраните его как
Srv_int.
Модуль содержит: объявление класса , содержащего объявленные в интерфейсе
методы, пустые заготовки методов интерфейса .
Добавим выделенные строки (реализацию методов интерфейса - чтения и за-
писи свойства и метода вычисления квадрата ).
Если Вы хотите передавать значения форме сервера MainForm, например, для
отображения, не забудьте добавить uses SrvMain, где эта форма описана .
unit srv_int;
{$WARN SYMBOL_PLATFORM OFF}
interface
uses SrvMain, SysUtils, ComObj, ActiveX, MyServer_TLB,
StdVcl;
type
{
Этот класс должен содержать реализацию методов
интерфейса. Дальнейшие обращения к интерфейсу будут
означать обращения к экземпляру этого класса.
}
TCalcSrv = class(TAutoObject, ICalcSrv)
private
f: real; //Здесь хранятся значения свойства
protected
function Get_value: WideString; safecall;
function GetSquare: WideString; safecall;
procedure Set_value(const Value: WideString);
safecall;
end;
implementation
uses ComServ;
function TCalcSrv.Get_value: WideString;
begin
Result:=FloatToStr(f); // Чтение числа
end;
function TCalcSrv.GetSquare: WideString;
                                           20
  property value: WideString read Get_value write
                                               Set_value;
end;

Ре али заци я и нт е рф е йса
Н аж мем кнопку Refresh Implementation. Сформи руется (и ли обнов и тся) текст
би бли отеки ти пов . Появ и тся нов ы й мод уль Unit1.pas. Сохрани те его как
Srv_int.
М од уль сод ерж и т: объяв лени екласса, сод ерж ащ его объяв ленны ев и нтерфей се
метод ы , пусты ез аготов ки метод ов и нтерфей са.
Д обав и м в ы деленны е с т ро к и (реали з аци ю метод ов и нтерфей са - чтени я и з а-
пи си св ой ств а и метод а в ы чи слени якв ад рата).
Е сли В ы хоти те перед ав ать з начени я форме серв ера MainForm, напри мер, д ля
отображ ени я, нез абуд ьтед обав и ть uses SrvMain, гд еэта форма опи сана.

unit srv_int;
{$WARN SYMBOL_PLATFORM OFF}
interface
  uses SrvMain, SysUtils, ComObj, ActiveX, MyServer_TLB,
         StdVcl;
  type
    {
    Этот класс должен содержать реализацию методов
    интерфейса. Дальнейшие обращения к интерфейсу будут
    означать обращения к экземпляру этого класса.
    }
    TCalcSrv = class(TAutoObject, ICalcSrv)
    private
       f: real; //Здесь хранятся значения свойства
    protected
       function Get_value: WideString; safecall;
       function GetSquare: WideString; safecall;
       procedure Set_value(const Value: WideString);
                                        safecall;
    end;

   implementation

   uses ComServ;

   function TCalcSrv.Get_value: WideString;
   begin
     Result:=FloatToStr(f); // Чтение числа
   end;

   function TCalcSrv.GetSquare: WideString;