Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> объект из интерфейса 
:(
    Опции темы
setnull
Дата 1.3.2012, 12:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 417
Регистрация: 3.7.2007

Репутация: нет
Всего: 1



Все здравствуйте!

Как, имея указатель на интерфейс, реализуемый экземпляром объекта, получить непосредстьвенно  этот объект?

Спасибо!!!
PM MAIL   Вверх
superVad
Дата 1.3.2012, 13:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 735
Регистрация: 6.4.2006
Где: Черкассы, Украина

Репутация: 4
Всего: 15



Если такое понадобилось - то может и не очень нужен этот интерфейс?

Сделай приведение - ТвойКлассОбьекта(ТвойЭкземплярРеализующийИнтерфейс).
PM MAIL   Вверх
CodeMonkey
Дата 1.3.2012, 15:42 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1839
Регистрация: 24.6.2008
Где: Россия, Тверь

Репутация: 38
Всего: 89





--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
bems
Дата 1.3.2012, 17:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 31
Всего: 88



Цитата(CodeMonkey @  1.3.2012,  15:42 Найти цитируемый пост)
http://www.transl-gunsmoker.ru/2010/09/7-i...ace-object.html 

да, но в современных версиях работает I as TObject
И да, это нарушение ООП

Это сообщение отредактировал(а) bems - 1.3.2012, 17:03


--------------------
Обижено школьников: 8
PM MAIL   Вверх
k0rvin
Дата 1.3.2012, 22:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 442
Регистрация: 24.1.2010

Репутация: 1
Всего: 5



А что такое "Указатель на интерфейс"?


--------------------
“Object-oriented design is the roman numerals of computing.” — Rob Pike
All software sucks
PM MAIL   Вверх
setnull
Дата 1.3.2012, 22:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 417
Регистрация: 3.7.2007

Репутация: нет
Всего: 1



Спасибо всем!
Арифметика над ВМТ - то, чего ожидал!
Приведением и через as изначально пробовал - Д7.
Касательно ректальности: согласен, но лучшего не придумал. Просто нужно хранить объекты в Варианте. 
Рассматривался еще вариант

Код

TVarData(val).Type := varByRef;
TvarData(val).VPointer := obj;


но он показался более извращенным.
Хотя может есть более изящные решения?

Плюс, при выбранном подходе с IUnknown, вторым зайцем снимается вопрос с манипуляциями по сборке мусора.

Добавлено @ 22:43
Цитата(k0rvin @ 1.3.2012,  22:09)
А что такое "Указатель на интерфейс"?

адрес реализации интерфейса конечным объектом

Это сообщение отредактировал(а) setnull - 1.3.2012, 22:46
PM MAIL   Вверх
k0rvin
Дата 1.3.2012, 22:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 442
Регистрация: 24.1.2010

Репутация: 1
Всего: 5



Цитата(setnull @ 1.3.2012,  22:40)
Цитата(k0rvin @ 1.3.2012,  22:09)
А что такое "Указатель на интерфейс"?

адрес реализации интерфейса конечным объектом

Эм.. прости, все равно не очень понятно. Хотя из твоего поста предполагаю, что нужен набор методов объекта, которые реализуют указанный интерфейс?


--------------------
“Object-oriented design is the roman numerals of computing.” — Rob Pike
All software sucks
PM MAIL   Вверх
bems
Дата 1.3.2012, 23:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 31
Всего: 88



k0rvin, интерфейс это значение типа IInterface или любого, который от него наследуется

Добавлено через 3 минуты и 55 секунд
http://docwiki.embarcadero.com/RADStudio/e...face_References

Это сообщение отредактировал(а) bems - 1.3.2012, 23:04


--------------------
Обижено школьников: 8
PM MAIL   Вверх
CodeMonkey
Дата 2.3.2012, 00:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1839
Регистрация: 24.6.2008
Где: Россия, Тверь

Репутация: 38
Всего: 89



Цитата(setnull @  1.3.2012,  23:40 Найти цитируемый пост)
Просто нужно хранить объекты в Варианте.


А как это связано с вопросом?

Это смотрели? http://docwiki.embarcadero.com/RADStudio/e...om_Variant_Type

Добавлено через 3 минуты и 11 секунд
Цитата(k0rvin @  1.3.2012,  23:09 Найти цитируемый пост)
А что такое "Указатель на интерфейс"? 


Обычно в Delphi под этими словами понимается собственно сам интерфейс. Потому что в Delphi он представлен как указатель на табличку (запись) методов. Словосочетание "укзатель на интерфейс" используется, чтобы подчеркнуть, что речь идёт именно о программной конструкции, а не слове "интерфейс" в разговорном смысле.


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
bems
Дата 2.3.2012, 01:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 31
Всего: 88



Цитата(CodeMonkey @  2.3.2012,  00:38 Найти цитируемый пост)
Словосочетание "укзатель на интерфейс" используется, чтобы подчеркнуть, что речь идёт именно о программной конструкции, а не слове "интерфейс" в разговорном смысле. 
чтобы отличить значение от типа, не?



--------------------
Обижено школьников: 8
PM MAIL   Вверх
setnull
Дата 3.3.2012, 02:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 417
Регистрация: 3.7.2007

Репутация: нет
Всего: 1



Цитата(CodeMonkey @ 2.3.2012,  00:38)
Это смотрели? http://docwiki.embarcadero.com/RADStudio/e...om_Variant_Type

очень интересно!
даже не задумывался, что под тип выделено 2байта, а представлено всего 20+\-, а остальное - непаханное поле
а присмотреться -  даже в исходниках написано

Код

  // custom types range from $110 (272) to $7FF (2047)


но!

учитывая, что все объекты задачи являются потомками TInterfacedObject, почему их не "подвешивать" просто за интерфейсы?
PM MAIL   Вверх
bems
Дата 3.3.2012, 02:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 31
Всего: 88



Цитата(setnull @  3.3.2012,  02:31 Найти цитируемый пост)
учитывая, что все объекты задачи являются потомками TInterfacedObject, почему их не "подвешивать" просто за интерфейсы? 
потому что если тебе нужен объект а не интерфейс, то и храни объект



--------------------
Обижено школьников: 8
PM MAIL   Вверх
setnull
Дата 3.3.2012, 02:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 417
Регистрация: 3.7.2007

Репутация: нет
Всего: 1



Цитата(bems @ 2.3.2012,  01:15)
Цитата(CodeMonkey @  2.3.2012,  00:38 Найти цитируемый пост)
Словосочетание "укзатель на интерфейс" используется, чтобы подчеркнуть, что речь идёт именно о программной конструкции, а не слове "интерфейс" в разговорном смысле. 
чтобы отличить значение от типа, не?

"the apple"  от "an apple"

прошу прощения за оффтоп, но всплыло сквозь попытки перевыразить понятие указателя на интерфейс...

начинающий программист думает, что в килобайте 1000 байт
а практикующий, что в километре 1024 метра smile

Добавлено через 2 минуты и 33 секунды
Цитата(bems @ 3.3.2012,  02:39)
потому что если тебе нужен объект а не интерфейс, то и храни объект

попробую
PM MAIL   Вверх
bems
Дата 3.3.2012, 02:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 31
Всего: 88



Цитата(setnull @  3.3.2012,  02:50 Найти цитируемый пост)
"the apple"  от "an apple"
аналогия такая аналогия



--------------------
Обижено школьников: 8
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1340 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.