Главная страница
    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.45 MB
Время: 0.035 c
14-1101177109
Rand
2004-11-23 05:31
2004.12.12
Сколько платят?


6-1096822363
Wolverrum
2004-10-03 20:52
2004.12.12
ADO и CGI


3-1100515146
denis24
2004-11-15 13:39
2004.12.12
dbimage


4-1098956180
WaS
2004-10-28 13:36
2004.12.12
Получить путь активного окна эксплорер а


8-1094843851
KADAN
2004-09-10 23:17
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский