|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
19.03.2015, 12:09 | #11 |
Участник клуба
Регистрация: 12.09.2012
Сообщений: 1,030
|
Давно уже реализовал. Вот только использовать компонент, для которого писал, нет нужды.
Что нужно программисту: Компьютер, Среда программирование, Воображение, Прямые руки, Мозги, Знания этой среды программирования.
Программист-это профессия, а программирование-это моё хобби. |
19.03.2015, 12:28 | #12 | |
Тот ещё
Старожил
Регистрация: 14.11.2007
Сообщений: 2,242
|
Цитата:
А если у вас у однотипных классов разные родители но одинаковые имена свойств, то можно и RTTI (Человек_Борща +1). Но я вам просто настоятельно рекомендую пересмотреть свои взгляды на ООП. |
|
19.03.2015, 12:48 | #13 | |
Форумчанин
Регистрация: 21.04.2014
Сообщений: 115
|
Цитата:
Постоянно пересматриваю, мы все несовершенны %) |
|
19.03.2015, 13:08 | #14 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
I'm learning to live...
|
|
19.03.2015, 13:47 | #15 | ||
Тот ещё
Старожил
Регистрация: 14.11.2007
Сообщений: 2,242
|
Цитата:
В том то и дело, что ... Цитата:
Самый наглядный пример такого подхода - OLE-объекты. "Пихай что угодно куда угодно". |
||
19.03.2015, 13:57 | #16 | ||
Форумчанин
Регистрация: 21.04.2014
Сообщений: 115
|
Цитата:
Цитата:
Мне не совсем понятно с чем именно вы не согласны и почему считаете, что задача в самом общем виде не имеет решения %) |
||
19.03.2015, 15:14 | #17 | ||
Тот ещё
Старожил
Регистрация: 14.11.2007
Сообщений: 2,242
|
Цитата:
Цитата:
// Добавлено ----------------------------- Вообще постановка задачи требует уточнений и конкретизации сути вопроса. Последний раз редактировалось Sibedir; 19.03.2015 в 15:22. |
||
19.03.2015, 16:02 | #18 |
Форумчанин
Регистрация: 21.04.2014
Сообщений: 115
|
Так-то это на большую статью тянет. Попробуем предельно сжато. У нас изначально написано:
Код:
Как сделать легальной запись 1 (CustomManager.ConstructObject)? Нам нужен способ конструирования: - дженерик с ограничением на конструктор. Тогда мы пишем instance = T.Create(); - дженерик с ограничением на record. Тогда мы сможем писать instance = new(T). Этот вариант забагован, в qc отмечено исправление в XE7 ( http://qc.embarcadero.com/wc/qcmain.aspx?d=123881 ). - некая фабрика-конструктор. Эту мы поставляем при создании самого менеджера, что-то типа: TCustomManager.Create(TFactory.GetC ustomInstantiator()) - некий указатель на фукнцию или анонимка: TCustomManager.Create(SomeConstruct ionCallback). Как сделать легальной запись 2 (CustomManager.Data[i].CustomField := value)? Нам нужен способ конкретизации того, что хранит обезличенный менеджер: - базовый класс в иерархии наследования без некоторых сопроводительных данных не позволит провести обратное приведение; - интерфейс вообще невозможно привести к исходному виду без метапрограммирования - в этом его суть; - дженерик инстанцируясь в компил-тайме (и только в нём) делает запись 2 легальной "из коробки". За бортом остались игры в диспатчеры (OLE-объекты, кастом варианты и т.п.) - эти разрешат запись 2, но запретят компилятору проверять её на ошибки\корректность. |
19.03.2015, 17:01 | #19 | ||
Тот ещё
Старожил
Регистрация: 14.11.2007
Сообщений: 2,242
|
OK, StriderX. Мысль с дженериками ясна. Непонимание у нас с тобой от другого. И виноват тут ТС. Вот смотри, что он пишет:
Цитата:
Но писать сами менеджеры для каждого класса все-таки придется. Ибо Цитата:
|
||
19.03.2015, 17:18 | #20 |
Форумчанин
Регистрация: 21.04.2014
Сообщений: 115
|
Да, в этом суть дженерик-контейнеров. Им абсолютно всё равно с чем иметь дело. Весь дополнительный функционал они запрашивают в виде интерфейсов. Хочешь отсортировать? Прям по месту сконструируй компаратор и отдай его интерфейс - TArray.Sort<TSomeUnknownData>(myArr ay, TComparer<TSomeUnknownData>.Constru ct(Exit(IfThen(blabla))));
Если речь о том, чтобы обезличить одной кнопкой сами контейнеры, то нужна поддержка ко-контравариантности. В Delphi таковой на данном этапе нет. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Множественное наследование ( доступ к базовым классам через puublic ,private) | Kioko | Общие вопросы C/C++ | 2 | 26.12.2014 19:48 |
Си как организовать структуру, данные взять из файла или сгенерировать | Vlt | Помощь студентам | 7 | 06.06.2012 22:55 |
Как организовать распределённый доступ к Paradox 7 ??? | Dr.Pauliss | БД в Delphi | 4 | 14.01.2012 17:32 |
C#. Как организовать распределённый доступ к Paradox 7 | Dr.Pauliss | C# (си шарп) | 1 | 14.01.2012 17:30 |
Организовать доступ к общей переменой в потоках | NastyaV | Помощь студентам | 6 | 24.03.2011 20:18 |