Помощь - Поиск - Пользователи - Календарь
Полная версия: Interface, смещение на 8 байт?
Форум «Всё о Паскале» > Delphi, Assembler и другие языки. > Delphi
TarasBer
У меня два вопроса.
Почему отладчик говорит, что некий интерфейс является указателем на C80874, хотя если привести его к какому-либо классу, то он уже будет указывать на C8087C? Откуда эти 8 байт?
И как правильно, с проверкой RTTI, приводить интерфейс к классу-наследнику? Приводить к целому, вычитать 8, потом приводить к классу - это как-то криво.
IUnknown
Вопрос №2: на старых версиях Дельфи есть много разных хаков (вот тут есть много ссылок по теме Have an interface, can I get the name of the class that has implemented it?). В современных (начиная с 2010) это делается тем же As (используется вызов SafeIntfAsClass).
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.