Главная страница
    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.45 MB
Время: 0.037 c
14-1101124907
Comp
2004-11-22 15:01
2004.12.12
Инсталяция Turbo Assembler 5.0


6-1096646286
BKGG
2004-10-01 19:58
2004.12.12
Sockets


14-1100870142
ПЛОВ
2004-11-19 16:15
2004.12.12
Где достать голосовой профиль для украинского языка?


14-1100843607
Mike Kouzmine
2004-11-19 08:53
2004.12.12
Есть ли на форуме обладатели Nokia 7610?


14-1100783094
Digitman
2004-11-18 16:04
2004.12.12
Не едут лыжи к вечеру .. не вижу очевидного .. ткните носом ?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский