Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.12.12;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.56 MB
Время: 0.05 c
1-1101453334
hgd
2004-11-26 10:15
2004.12.12
Программа без формы


3-1100074594
Serguar
2004-11-10 11:16
2004.12.12
Медленное открытие таблицы Paradox


14-1100092294
gn
2004-11-10 16:11
2004.12.12
Linux самая небезопасная операционная система в мире!


1-1101506237
Pips
2004-11-27 00:57
2004.12.12
Меню


1-1101599957
Bobby Digital
2004-11-28 02:59
2004.12.12
Install





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский