Форум: "Основная";
Текущий архив: 2006.10.22;
Скачать: [xml.tar.bz2];
ВнизКак получить инфо о property, об`явленом НЕ published? Найти похожие ветки
← →
Наиль © (2006-09-08 14:19) [40]Мне тут вспомнился Digitman.
Помнится я его пожалел, сказав что ему приходится целыми днями железными клещами вытаскивать информацию у новичков и начинающих.
Теперь и я на его месте.
← →
i-am-vladko © (2006-09-08 14:21) [41]за щкафом )) подскажи лучше как сделать
← →
DiamondShark © (2006-09-08 14:29) [42]
> подскажи лучше как сделать
Уже подсказали: для не-published членов после компиляции никаких имён не существует.
Тебе пытаются помочь решить задачу, не реализовать какой-то узкоспециализированный механизм, а именно прикладную задачу.
А ты упираешься.
Ну, не хочешь -- никто не заставляет.
← →
i-am-vladko © (2006-09-08 14:31) [43]ОК. попробую DLL...
← →
Наиль © (2006-09-08 14:36) [44]
> за щкафом )) подскажи лучше как сделать
Ещё раз повторю. Нет класса - нет доступа к его методам, есть класс (а появиться в RunTime он не может), то имена методов известны заранее, тогда см. [29]
Раз это тебе не подходит, то значит у тебя особая ситуация. Для особой ситуации нужно особое решение. Опиши ситуацию (как так получается, что в твоей программе появляются новые в RunTime), и тогда ты узнаешь "как лучше сделать"
← →
Наиль © (2006-09-08 14:40) [45]
> программе появляются новые в RunTime
следует читать программе появляются новые классы в RunTime
PS.
1. Ох уж эти железные клещи
2. И чем тебе пожет DLL?
← →
Ketmar © (2006-09-08 15:31) [46]"мастера на форуме играли в гестапо"... не в рифму, размер хромает, но как жизненно! %-)
← →
i-am-vladko © (2006-09-08 16:21) [47]Пора закрывать тему...
Новые классы в программе не появляются, хотя сделать ето можно (для новичков (шутка ;-) ) http://www.paxscript.com), но не нужно в моей ситуации.
В данной реализации хотелось сократить код, очень уж похожи методы в разных классах. Достаточно было прописать один - в базовом.
Ето никак не получится (не published, невозможно взять имя), а жаль.
← →
default © (2006-09-08 16:42) [48]i-am-vladko © (08.09.06 16:21) [47]
единообразие обработки объектов достигается через наследование или интерфейсы
классы-то тобой писаны?
← →
i-am-vladko © (2006-09-08 16:52) [49]Да, классы наши (совместный проект).
← →
default © (2006-09-08 16:58) [50]i-am-vladko © (08.09.06 16:52) [49]
рекомендую подробно изложить условия
возможно есть пути оптимизации
что конкретно значит "очень уж похожи методы в разных классах. " и тд и тп
← →
i-am-vladko © (2006-09-08 17:41) [51]>что конкретно значит "очень уж похожи методы в разных классах. " и тд и >тп
Конкретый пример:
поиск об`екта класса TF1 в TF1_List, где TF1 - поле, c параметром parObj1:
<цикл>
если (ObjF1.Field_1 = parObj1.Field_1) and
......................................
(ObjF1.Field_n = parObj1.Field_n) then
то искомый об`ект.
принципиально тот же поиск, в том же классе, но TF1_List состоит из об`ектов TF2 :
<цикл>
если (ObjF2.Field2_1 = parObj2.Field2_1) and
......................................
(ObjF2.Field2_n = parObj2.Field2_n) then
то искомый об`ект.
тот же поиск в совершенно другом классе, TF2_list,
если (ObjF3.Field3_1 = parObj3.Field3_1) and
......................................
(ObjF3.Field3_n = parObj3.Field3_n) then
то искомый об`ект.
Причем и TF1_list, TF2_list i TF3_list - наследники TF_Base
Была мысль етот поиск наследовать из TF_Base...
← →
default © (2006-09-08 18:02) [52]i-am-vladko © (08.09.06 17:41) [51]
тут безусловно можно исправить положение
надо просто иерархию проектировать продуманно
вот посмотреть бы хотя бы на два класса TF_Base и, например, на TF1_list
← →
Джо © (2006-09-08 20:34) [53]> [51] i-am-vladko © (08.09.06 17:41)
Что значит "поиск" поля применительно к классу, который известен на этапе компиляции? Если он известен, то уже известны и имена его полей. Тут путаница какая-то, мне кажется.
Если же просто не известен конкретный потомок объекта в списке (например, в обобщенном списке), то всегда можно применить оператор is.
← →
DiamondShark © (2006-09-09 13:39) [54]
> i-am-vladko © (08.09.06 17:41) [51]
Пусть элементы списков реализуют интерфейс
IComparable = interface
["{4A41D8E3-BFFE-4D65-B34F-1731FEDCA490}"]
function IsEqual(AObject: TObject): boolean;
end;
Тогда смело можно выносить в TF_Base обобщённую процедуру поиска
Страницы: 1 2 вся ветка
Форум: "Основная";
Текущий архив: 2006.10.22;
Скачать: [xml.tar.bz2];
Память: 0.54 MB
Время: 0.053 c