|  | 
|      | 
|   | 
| Создать базовый класс, основывающийся на IUnknownDelphi , Технологии , COM и DCOMСоздать базовый класс, основывающийся на IUnknown
Оформил: DeeCo 
If I want automatic garbage collection with interfaces, I use
 TInterfacedObject as base class. What should I use,
 if I don''t want automatic destruction?
 is there a similar common base class or do I
 have to implement the IInterface methods myself?
 I use this one:
{== BaseNonRefcountIntfObjU ===========================================}
 {: This unit provides a base class with a non-reference counted 
implementation of IUnknown. 
@author Dr. Peter Below 
@desc Version 1.0 created 28 Mдrz 2002
Last modified 28 Mдrz 2002
}
 {======================================================================}
 unit BaseNonRefcountIntfObjU;
 interface
 type
   {: Derive classes that need a non-reference counted IUNknown 
     implementation from this class. }
   TNonRefcountInterfacedObject = class(TObject, IUnknown)
   protected
     { IUnknown }
     function QueryInterface(const IID : TGUID; out Obj): HResult;
       stdcall;
     function _AddRef: Integer; stdcall;
     function _Release: Integer; stdcall;
   end;
 implementation
 uses Windows;
 function TNonRefcountInterfacedObject.QueryInterface(const IID : TGUID;
   out Obj): HResult;
 begin
   if GetInterface(IID, Obj) then
     Result := S_OK
   else
     Result := E_NOINTERFACE
 end;
 function TNonRefcountInterfacedObject._AddRef: integer;
 begin
   Result := -1   // -1 indicates no reference counting is taking 
    place
 end;
 function TNonRefcountInterfacedObject._Release: integer;
 begin
   Result := -1   // -1 indicates no reference counting is taking 
    place
 end;
 end { BaseNonRefcountIntfObjU }.Приведенный код определяет базовый класс  Если вы хотите создать объект, который не использует автоматическую подсчет ссылок, вы можете派827 класс от этого базового класса. Это означает, что вам нужно будет реализовать методы  Вот краткое описание каждого метода: 
 Используя это базовое класс и реализуя эти методы самостоятельно, вы можете создавать объекты без автоматического сборки мусора при использовании интерфейсов. Вот простой пример использования этого базового класса: В этом примере  Помните, что при использовании интерфейсов без автоматического подсчета ссылок ответственность за очистку объектов от мусора лежит на вас. Это может включать реализацию деструктора или явное вызывание  В статье рассматривается создание базового класса, не использующего автоматическое уничтожение объектов, и реализация интерфейса IUnknown в этом классе. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш  :: Главная :: COM и DCOM :: 
 | ||||
|  ©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 | ||||