Опрос

Что вас больше интересует?

  • игры для nokia
  • темы на телефон
  • программы на мобильный
  • обзоры мобильных телефонов


 

Какие игры вы предпочитаете?

  • игры для мальчиков
  • игры для девочек
  • драки
  • стрелялки
  • логические игры
  • спортивные


 

счетчики

Спонсор раздела:

Класс TComServer

Статьи

Класс TComServer - единственный «постоялец» модуля ComServ. В рамках класса инкапсулировано приложение COM-сервер, доступ к которому реализован посредством автоматически создаваемой глобальной переменной Com-Server. Цепочка наследования класса невелика. TComServer построен на основе абстрактного класса TComServerObject, который в свою очередь берет начало от TObject. Имя сервера устанавливается процедурой:

procedure SetServerName(const Name: string);

Библиотека типов загружается методом: procedure LoadTypeLib;

Процессом регистрации (и снятия с регистрации) COM-сервера в системном реестре ведает процедура:

procedure Initialize;

В рамках метода Initialize() вызывается процедура:

procedure UpdateRegistry(Register: Boolean);

Для регистрации в системном реестре всех входящих в сервер объектов в процедуру передается значение true. Обратная операция (стирание данных о COM-объектах в реестре) произойдет при передаче false.

Из девяти свойств COM-сервера всего одно доступно для редактирования:

property UIInteractive: Boolean;

Это свойство определяет, должен ли COM-сервер иметь интерактивный интерфейс с пользователем. Интерактивность (состояние true) в первую очередь проявляется в информировании сервером пользователя обо всех возникающих исключительных ситуациях. Если же сервер выполняется как отдельная служба (сервис), то целесообразно передавать в это свойство значение false.

В классе TComServer предусмотрен один-единственный обработчик события: property OnLastRelease: TLastReleaseEvent;

type TLastReleaseEvent = procedure(var Shutdown: Boolean) of object;

который призван реагировать на тот момент, когда последний клиент отказывается от услуг сервера. Единственный параметр метода Shutdown определяет, прекращать работу сервера (значение true) или оставить его в памяти (false).

Ниже представлен листинг, предлагающий вариант применения информационных свойств сервера.

implementation uses ComServ; {$R *.dfm}

procedure TfrmMain.FormCreate(Sender: TObject); begin

with Memo1.Lines do begin

Clear;

Add('HM4: -+#9+ComServer.ServerName);

AddC^a^: '+#9+ComServer.ClassName);

Add('Тип: -+#9+ComServer.ServerKey);

Add('HM4 файла: '+#9+ComServer.ServerFileName); end; end;

procedure TfrmMain.Timer1Timer(Sender: TObject); begin

{с каждым "вздохом" таймера мы узнаем количество загруженных COM-объектов} StaticTextl.Caption:=Format('Число COM-объектов %d',[ComServer. ObjectCount]); end;

Добавить комментарий


Защитный код
Обновить