![]() |
![]() ![]() ![]() ![]() |
|
Первый COM-серверDelphi , Технологии , COM и DCOM
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 прямо в свой смартфон. Подпишитесь на наш :: Главная :: COM и DCOM ::
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 | ||||