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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Интерфейсы базовых классов. Давайте обсудим? IStrings, IDataset, IField 
:(
    Опции темы
Alexeis
Дата 21.4.2009, 09:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



  Хотя надо отметить, что интерфейсы не слабо увеличивают размер каждого экземпляра объекта. Например исполнение 4х интерфейсов в объекте 4 * 4 = 16 байт плюс к размеру. Учитывая, что TObject будет уже исходно не 4, а 8 байт. 6й, 7й наследник будут уже 7 * 4 = 28 байт дополнительно. В принципе не критично учитывая что на каждый объект и так добавляется + 10 байт от менеджера кучи, но все равно расход имеется. Хорошо было б если это добро включалось директивой, $IFDEF STANDART_INTERFACESES. 
  Кстати есть вариант написать препроцессор и самому такое сделать(хотя бы до 5-10 самых используемых классов), после чего перекомиллировать VCL и попробовать скомпилировать так большой проект.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Bose
Дата 21.4.2009, 11:21 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1458
Регистрация: 5.3.2005
Где: Riga, Latvia

Репутация: 23
Всего: 51



Цитата(Alexeis @  21.4.2009,  08:40 Найти цитируемый пост)
Кстати есть вариант написать препроцессор и самому такое сделать(хотя бы до 5-10 самых используемых классов), после чего перекомиллировать VCL и попробовать скомпилировать так большой проект.


Есть и другой. Кудесник Алексей Казанцев придумал и выложил у себя в блоге пример, навешивающий хук на метод TObject.GetInterface позволяющий добавить поддержку новых интерфейсов в старые классы. smile 

Пример показывает как добавить поддержку интерфейса ICaptionedControl к некоторым базовым контролам. Его легко можно доработать, реализовав пример с интерфейсами
Код

IDataSourceProperty = interface
  property Datasource: Idatasource;
end;
IDataFieldProperty = interface
  property DataFieldName:string;
  function GetDataField: IField;
end;
IReadOnly = interface
  property ReadOnly: Boolean;
end;


p.s. it's a kind of magic
PM MAIL WWW Skype   Вверх
mes
Дата 21.4.2009, 20:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


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

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



Цитата(Alexeis @  21.4.2009,  08:40 Найти цитируемый пост)
Например исполнение 4х интерфейсов в объекте 4 * 4 = 16 байт плюс к размеру. 

это только указатели на виртуальную таблицу, а еще сами таблицы увеличат размер библиотеки, хотя это уже мелочи.

Цитата(Alexeis @  21.4.2009,  08:40 Найти цитируемый пост)
Хорошо было б если это добро включалось директивой, $IFDEF STANDART_INTERFACESES. 

имхо, можно не изменяя иерархии добавить адаптеры, предоставляющие нужные интерфейсы. 




--------------------
PM MAIL WWW   Вверх
Альт
Дата 25.4.2009, 07:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Лет шесть назад купил Rinse... от http://www.dimeric.com... в комплекте идет их пакет Utils... посмотрите на интерфейсы:
Dimeric Software Utilities
Все объекты VCL легко обертываются интерфейсами вот такими методами:
NewStringList
где первый параметр - это любой созданный вами наследник TStrings (обычно TStringsList), а второй - это признак, что объект надо разрушить при занулении счетчика интерфейса. Аналогично с 
NewDataSetWrapper и т.д.
Библиотека функционально огромна и стоит своих денег.

Это сообщение отредактировал(а) Альт - 25.4.2009, 08:21
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
CodeMonkey
Дата 25.4.2009, 14:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(Альт @  25.4.2009,  07:52 Найти цитируемый пост)
Библиотека функционально огромна и стоит своих денег

Да, только развитие её остановилось в 2005-м ;)


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


Новичок



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

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



CodeMonkey, сложно придумать что-то новое в IList и IDataSet... стабильность у пакета 100%... покупал я ради Rinse, а утилиты пришли сверху довеском, как нижний слой реализации и свои деньги отработали еще на первом проекте ) пишу на семерках, но проекты собираются и на d2009 без всяких проблем... будет нужно, переведу... у меня сырцы ;))
А писал я к тому, что не требуется оборачивать VCL интерфейсами... это 100 лет умеют делать и сторонние библиотеки... к примеру еще есть RemObject ;)
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

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


 




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


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

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