![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Интерфейс объявляется как класс!??? Эт как?
WondeRu © (2004-11-29 13:20:00)В модуле 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 15:47:00) [1]Именно. Я так понимаю, что в 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;
Но тогда те будут недоступно множественно наследование интерфейсов..
WondeRu (2004-11-29 15:14:00) [2]jack128 © (29.11.04 14:34) [3]
понятно что не компилится, Вы хотите сказать, что этот код нужен только для совместимости со старыми версиями Делфи!? Тогда спасибо за ответ!
jack128 (2004-11-29 14:34:00) [3]то и означает. попробуй скомпилировать этот код. возможно в D2 это и компилировалось, но не сейчас.
WondeRu (2004-11-29 14:26:00) [4]jack128 © (29.11.04 13:55) [1]
AFIAK не скомпилируется это.
что значат сие странные слова? )
jack128 (2004-11-29 13:55:00) [5]WondeRu © (29.11.04 13:20)
А в OleCtl.pas, вот так:
{$EXTERNALSYM IPersistStreamInit}
IPersistStreamInit = class(IPersistStream)
public
function InitNew: HResult; virtual; stdcall; abstract;
end;
AFIAK не скомпилируется это.