Главная страница
    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.46 MB
Время: 0.032 c
4-1099042237
WaS
2004-10-29 13:30
2004.12.12
Сымитировать нажатие клавиши F2 не посредством key_event


14-1101007383
Александр1
2004-11-21 06:23
2004.12.12
Глюк windows 2003


3-1100182927
Katrin
2004-11-11 17:22
2004.12.12
Тригер и переменные


1-1101896951
Алексей
2004-12-01 13:29
2004.12.12
графика


1-1101502027
leonidus
2004-11-26 23:47
2004.12.12
ToolBar`ы с изменяющимся в run-time набором кнопок





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