Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.12.12;
Скачать: CL | DM;

Вниз

Интерфейс объявляется как класс!??? Эт как?   Найти похожие ветки 

 
WondeRu ©   (2004-11-29 13:20) [0]

В модуле ActiveX.pas интерфейс объявлен так:
{$EXTERNALSYM IPersistStreamInit}
 IPersistStreamInit = interface(IPersistStream)
   ["{7FD52380-4E07-101B-AE2D-08002B2EC713}"]
   function InitNew: HResult; stdcall;
 end;


А в OleCtl.pas, вот так:

 {$EXTERNALSYM IPersistStreamInit}
 IPersistStreamInit = class(IPersistStream)
 public
   function InitNew: HResult; virtual; stdcall; abstract;
 end;


Второго кода понять никак не могу...
Объясните откуда взялось такое объявление интерфейса и для чего нужно?


 
jack128 ©   (2004-11-29 13:55) [1]

WondeRu ©   (29.11.04 13:20)
А в OleCtl.pas, вот так:

{$EXTERNALSYM IPersistStreamInit}
IPersistStreamInit = class(IPersistStream)
public
  function InitNew: HResult; virtual; stdcall; abstract;
end;

AFIAK не скомпилируется это.


 
WondeRu ©   (2004-11-29 14:26) [2]

jack128 ©   (29.11.04 13:55) [1]
AFIAK не скомпилируется это.

что значат сие странные слова? )


 
jack128 ©   (2004-11-29 14:34) [3]

то и означает. попробуй скомпилировать этот код. возможно в D2 это и компилировалось, но не сейчас.


 
WondeRu ©   (2004-11-29 15:14) [4]

jack128 ©   (29.11.04 14:34) [3]
понятно что не компилится, Вы хотите сказать, что этот код нужен только для совместимости со старыми версиями Делфи!? Тогда спасибо за ответ!


 
jack128 ©   (2004-11-29 15:47) [5]

Именно. Я так понимаю, что в D2 небыло ключевого слова interface (в контексте объявления интерфейсов COM) и поэтому вот так вот делали.  в принципе и сейчас можно подобным образом образом извратиться

 IUnknown = class(TObject)
   function QueryInterface(const IID: TGUID; out Obj): HResult; virtual; stdcall; abstract;
   function _AddRef: Integer; stdcall; virtual; stdcall; abstract;
   function _Release: Integer; stdcall; virtual; stdcall; abstract;
 end;

 TInterfacedObject = class(IUnknown)
   function QueryInterface(const IID: TGUID; out Obj): HResult; stdcall; override;
   function _AddRef: Integer; stdcall; override;
   function _Release: Integer; stdcall; override;
 end;

Но тогда те будут недоступно множественно наследование интерфейсов..



Страницы: 1 вся ветка

Текущий архив: 2004.12.12;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.046 c
1-1101885164
opoloXAI
2004-12-01 10:12
2004.12.12
Как распечатать TStrings в три столбика?


6-1096646370
квакер
2004-10-01 19:59
2004.12.12
POP3 Using


14-1101033590
ms
2004-11-21 13:39
2004.12.12
Как в VB6 вызвать функцию из библиотеки C++


14-1100847662
MBo
2004-11-19 10:01
2004.12.12
Пятница. Возвращение Васи Пупкина и другие задачки ;)


9-1091815630
Антон
2004-08-06 22:07
2004.12.12
[GLScene]: TMemoryStream