![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
object и ;interface
savva © (2003-03-11 15:26:00)бЯда.. и не знаю как избежать
пишу
TMyObject = object(TObj, IUnknown)
...
...
( 243)бЯда.. и не знаю как избежать
пишу
TMyObject = object(TObj, IUnknown)
...
...
...
end;
где IUnknown - interface
а компилятор мне говорит
[Error] *****.pas(243): Undeclared identifier: "QueryInterface"
[Error] *****.pas(243): Undeclared identifier: "_AddRef"
[Error] *****.pas(243): Undeclared identifier: "_Release"
в объектах можно использовать интерфейсы?
Полность самому эти методы реализовывать не охота - во многих местах повтрояется..
скорее всего дело во мне - но надо узнать точнее:))
Игорь Шевченко (2003-03-12 10:12:00) [1]
Петр А. Иванов (11.03.03 18:34)
Не понял, честно говоря. В том примере в record"е объявляется три указателя на функции и все. Это ж не откровение.
Эти указатели и в object никто не мешает объявить. Проблему автора это не решает.
Петр А. Иванов (2003-03-11 18:34:00) [2]
Да в object нельзя, а в packed record можно. В Delphi5 есть пример DEMOS\ActiveX\ShellExt\purecontextmenu.pas.
Но вот затраты...:(
Игорь Шевченко (2003-03-11 18:21:00) [3]
в объектах можно использовать интерфейсы?
Нельзя. У TObject есть такая замечательная вещь, как VMT, в одном из слов по отрицательному смещению которой хранится указатель на используемые классом интерфейсы. В частности, оно пользуется в функции TObject.GetInterfaceEntry и еще в некоторых местах.
Рекомендую поискать в родном system.pas слово vmtIntfTable