Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.10.22;
Скачать: CL | DM;

Вниз

Как получить инфо о 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;
Скачать: CL | DM;

Наверх




Память: 0.57 MB
Время: 0.055 c
4-1149041613
Delphi5.01
2006-05-31 06:13
2006.10.22
ошибка в уничтожении потока Delphi+Thread+TerminateThread


2-1159783235
aht
2006-10-02 14:00
2006.10.22
Последний день месяца


3-1155812228
Ro-man
2006-08-17 14:57
2006.10.22
Вопросы по реализации 3-х звенного приложения...


2-1159783773
pathfinder
2006-10-02 14:09
2006.10.22
IndyFTP(10) + proxy = Socket Error # 10038


15-1159412801
Terrain
2006-09-28 07:06
2006.10.22
Как Милкшей генерирует картинку "земли" ?