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

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

каким образом выполнить метод компанента? [D7, Win2k]


stud ©   (2004-08-12 12:27:00) 

if (newclientf.MethodAddress(d_client.Fields[i].FieldName+'change'))<>nil then
если я нашел, что такой метод существует, как мне его выполнить?


stud   (2004-08-12 13:22:00) [1]

все работает. спасибо


stud   (2004-08-12 13:05:00) [2]

сделал так
type
 texecutemetod = procedure of object;
var
 i : integer;
 event_call : TMethod;
 executemetod : texecutemetod;

...................
event_call.Data:=newclientf.FindComponent(d_client.Fields[i].FieldName);
event_call.Code:=(newclientf.MethodAddress(d_client.Fields[i].FieldName+'change'));
executemetod:=texecutemetod(event_call);
executemetod;
не работает


Petr V. Abramov   (2004-08-12 12:45:00) [3]

см. TMethod

реализация
 tmyproc = procedure - это 4 байта, адрес точки входа в ф-цию

реализация
 tmyproc = procedure of object- 8 байт, адрес точки входа + указатель на экземпляр класса, тот самый self, который является неявным параметром любого метода

 Типы TMethod и procedure of objectможно смело приводить друг к другу.


Наверх

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