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

Вниз

Вызов метода объекта класса   Найти похожие ветки 

 
alkmas ©   (2002-05-13 10:48) [0]

Как вызвать метод объекта класса, зная только адрес объекта
и имя метода?


 
Ra ©   (2002-05-13 12:01) [1]

если метод published то

obj:tObject;
proc:procedure (...);

obj:=адрес объекта;
proc:=obj.MethodAddress(имя метода);


 
Бурундук   (2002-05-13 12:18) [2]

Тогда уж так:

var meth: procedure (...) of object;

TMethod(meth).Code := obj.MethodAddress(имя метода);
TMethod(meth).Data := obj;

meth(...); // вызов


 
MBo ©   (2002-05-13 14:02) [3]

var p:pointer;//или TObject
p:=адрес объекта
TНужныйОбъект(p).НужныйМетод;

пример
procedure TForm1.Label1Click(Sender: TObject);
var p:pointer;
begin
p:=label1;
Tlabel(p).Caption:="qq";
end;


 
alkmas ©   (2002-05-15 10:27) [4]

Это все верно для published методов, а как для остальных?


 
MBo ©   (2002-05-15 11:19) [5]

p:=memo1;
TMemo(p).Clear;
;)


 
alkmas ©   (2002-05-15 11:34) [6]

Уточняю вопрос - например:

var meth: procedure of object;

NameMethod:="Show";
TMethod(meth).Code := obj.MethodAddress(NameMethod);
TMethod(meth).Data := obj;

meth; // вызов
Если метод Show находится в published секции, то этот пример
работает если в public, то выдается ошибка.


 
Бурундук   (2002-05-15 11:46) [7]

Всё правильно, получить адрес не published метода по имени нельзя.

А какая, собственно, стоит задача?
И как велико множество тех методов, которые должны быть таким образом вызваны?

PS Если эти методы находятся в твоём ведении, размести их в published и всех делов.


 
MBo ©   (2002-05-15 11:59) [8]

RTTI дает информацию только о published


 
alkmas ©   (2002-05-15 12:09) [9]

Спасибо всем! Вроде разобрался.



Страницы: 1 вся ветка

Текущий архив: 2002.05.27;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.017 c
3-88332
MaXie
2002-04-30 11:51
2002.05.27
Update ODBC -> смерть клиенту!


14-88632
Deus
2002-04-19 13:23
2002.05.27
А давайте поговорим о лицензионности...


1-88508
Бывалый
2002-05-15 20:12
2002.05.27
Вопрос по формам.


4-88683
BAHO
2002-02-22 05:27
2002.05.27
Триклятая функция...


4-88682
Yaro
2002-03-27 23:56
2002.05.27
EnumProps | SetProp | GetProp