Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как получить инфо о property, об`явленом НЕ published?


Страницы:   1 2 3

i-am-vladko ©   (2006-09-07 19:58:00) 

Как получить инфо о property, об`явленом НЕ published, run-time?


Наиль   (2006-09-08 13:49:00) [21]


>  [33] i-am-vladko ©   (08.09.06 13:45)

Всё равно, объясни откуда взялась такая задача?


i-am-vladko   (2006-09-08 13:45:00) [22]

Кажется, сама иерархия роли не играет. Class - то самый что ни на есть базовый. Все остальные - потомки


Наиль   (2006-09-08 13:42:00) [23]


>  [31] Наиль ©   (08.09.06 13:39)

Думал [30] написано автором ветки. Ошибся.


Наиль   (2006-09-08 13:39:00) [24]

Расскажи про иерархию по подробней, может чем-то и поможем.


{KRYAK}   (2006-09-08 13:34:00) [25]

>Procedure ExecuteProc(ProcName:string)
>begin
>if ProcName='Metod1' then YourClass.Metod1 else
>if ProcName='Metod2' then YourClass.Metod2 else
>...
>... else TException.Create('ВигВам!');
>end;

Конечно, можно и так. Идея в другом - унифицировать в ето в базовом классе, не прописывая ЕxecuteProc(...) по всей иерархии


{KRYAK}   (2006-09-08 13:30:00) [26]

А почему бы не генерить DLL?


Наиль   (2006-09-08 13:30:00) [27]


> дык.. проблема-то ето самое MyMethod как parametr задать
> - имя знать нужно, считать... кто знает откуда...

Нам не понятно откуда могла взяться такая задача.
Если класс в программе не используется, то естественно, ты не сможешь вызвать его методы. Если используется, то имена методов класса известны.
Значит можно написть что-то вроде:
Procedure ExecuteProc(ProcName:string)
begin
if ProcName='Metod1' then YourClass.Metod1 else
if ProcName='Metod2' then YourClass.Metod2 else
...
... else TException.Create('ВигВам!');
end;


i-am-vladko   (2006-09-08 13:16:00) [28]

>@TMyClass.MyMethod; :) и пофигу как он там виртуальный или позолоченный
дык.. проблема-то ето самое MyMethod как parametr задать - имя знать нужно, считать... кто знает откуда...
нигде имени нет ((
полный облом


i-am-vladko   (2006-09-08 13:07:00) [29]

Куда уж более...


default   (2006-09-08 13:02:00) [30]

I>
> Если об`явить virtual - будет регистрация в VMT, есть ли
> способ взять указатель оттуда?

@TMyClass.MyMethod; :) и пофигу как он там виртуальный или позолоченный


Джо   (2006-09-08 12:56:00) [31]

> [18] i-am-vladko ©   (08.09.06 12:32)
> Задача - унифицировать поиск property Field по его имени
> и типу в базовом классе.

А может, это не "задача", а "способ реализации"? Для чего это нужно на более высоком уровне абстракции?


Джо   (2006-09-08 12:55:00) [32]

> [20] i-am-vladko ©   (08.09.06 12:40)
> а все-таки ПОЧЕМУ НЕЛЬЗЯ? Если об`явить virtual - будет
> регистрация в VMT, есть ли способ взять указатель оттуда?

Опять двадцать пять! VMT! :) А что, в VMT хранятся именаметодов?


i-am-vladko   (2006-09-08 12:47:00) [33]

O! поподробнее, PLZ )))


default   (2006-09-08 12:46:00) [34]

i-am-vladko ©   (08.09.06 12:40) [20]

> Если об`явить virtual - будет регистрация в VMT, есть ли
> способ взять указатель оттуда?

есть, правда метод, смещение в vmt которого ищется, должен быть задан во время компиляции(с указанием класса)


i-am-vladko   (2006-09-08 12:40:00) [35]

а все-таки ПОЧЕМУ НЕЛЬЗЯ? Если об`явить virtual - будет регистрация в VMT, есть ли способ взять указатель оттуда?


i-am-vladko   (2006-09-08 12:34:00) [36]

>Нельзя получить указатель на паблик-метод по его имени. И всё.
ну тогда и задача падает...


i-am-vladko   (2006-09-08 12:32:00) [37]

Задача - унифицировать поиск property Field по его имени и типу в базовом классе.


Джо   (2006-09-08 12:20:00) [38]

> [14] i-am-vladko ©   (08.09.06 12:10)
> как добраться к методу, без создания для него published
> property?

Ну при чем здесь "published property"? Нельзя получить указатель на паблик-метод по его имени. И всё.
А может, лучше "зайти со стороны задачи"? Для какой цели это всё затевается?


Наиль   (2006-09-08 12:20:00) [39]


TYourClass=class
public
procedure Method;
End;

procedure TForm1.Button1Click(Sender:TObject);
begin
YourClass.Method;
End;

Я добрался до не Published-метода, но я подозреваю, что ты не это имел в виду.


DiamondShark   (2006-09-08 12:17:00) [40]


> как добраться к методу, без создания для него published
> property?

Объявить его в published секции.


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо