Первый COM-серверDelphi , Технологии , COM и DCOMПервый COM-серверunit DllClass; interface uses ActiveX, ComObj; const CLSID_TDllNumber: TGUID = '{84960F62-1D49-11D1-854E-444553540000}'; type INumber = interface ['{ECD5DAE3-1D37-11D1-854E-444553540000}'] function GetValue: Integer; stdcall; procedure SetValue(New: Integer); stdcall; procedure Increase; stdcall; function RefCount: Integer; stdcall; end; type TDllNumber = class(TComObject, INumber) private Value: Integer; public function GetValue: Integer; virtual; stdcall; procedure SetValue(New: Integer); virtual; stdcall; procedure Increase; virtual; stdcall; function RefCount: Integer; stdcall; procedure Initialize; override; destructor Destroy; override; end; implementation uses Windows, ComServ, SysUtils; procedure TDllNumber.Initialize; begin inherited; Value := 10; end; destructor TDllNumber.Destroy; begin inherited; MessageBox(0, PChar('Object ' + IntToStr(Value) + ' Destroyed'), 'TDLLNumber', mb_OK); // API call end; function TDllNumber.GetValue: Integer; begin Result := Value; end; procedure TDllNumber.SetValue(New: Integer); begin Value := New; end; procedure TDllNumber.Increase; begin Inc(Value); end; function TDllNumber.RefCount: Integer; begin Result := inherited RefCount; end; initialization TComObjectFactory.Create( ComServer, TDllNumber, CLSID_TDllNumber, 'Md3.FirstCom', 'Md3 First COM Server', ciMultiInstance); end.Скачать весь проект Это проект Delphi, который реализует простой сервер COM с помощью единиц ActiveX и ComObj. Сервер предоставляет интерфейс INumber, который имеет четыре метода: GetValue, SetValue, Increase и RefCount. Вот разбивка кода:
Код хорошо структурирован и соблюдает лучшие практики для реализации сервера COM в Delphi. Вот несколько предложений по улучшению:
В целом, это хороший старт для создания простого сервера COM в Delphi. С дополнительной проверкой и отладкой он может стать надежным и reliabel компонентом для вашего приложения. В статье описан пример создания первого COM-сервера на языке Pascal, который реализует интерфейс INumber и предоставляет функции GetValue, SetValue, Increase и RefCount для управления целочисленным значением. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта. :: Главная :: COM и DCOM ::
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |