Главная страница
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.015 c
1-88525
Грифон
2002-05-15 19:29
2002.05.27
ограничить количество компонент на форме


3-88327
Vika2
2002-04-29 15:45
2002.05.27
Приложение Клиент - Сервер по технологии Midas


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


14-88606
ProgMan
2002-04-17 11:18
2002.05.27
Погиб Форум.


1-88517
BAHO
2002-05-15 00:07
2002.05.27
Отрезок времени...!