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

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

Присвоить св-ву объекту процедуру [WinXP]


InsaneFarmer ©   (2006-07-27 11:09:00) 

Здравствуй, All. назрел у меня вопросец по дэлфи.

есть сторонний юнит, в котором объявлен объект TSnoopArp (если кто с ним сталкивался - тем более отпишитесь), у которого есть property OnCaptureARP: TOnCaptureARPEvent read FOnCaptureARP write FOnCaptureARP; FOnCaptureARP, в свою очередь, объявлен как TOnCaptureARPEvent;  

TOnCaptureARPEvent = procedure (
Sender: TObject;
PacketHeader: PPCAP_PKTHDR;
EthernetHeader: PETHERNET_HDR;
ARPHeader: PARP_HDR) of object;


всё бы хорошо, когда этот компонент бросаешь на форму. там с обработкой входящих арп не возникает проблем. а в консольном приложении я не могу понять, как присвоить этому компоненту свою обработку приходящих пакетов. т.е там надо написать процедуру-обработчик, и "зарегистрировать" её на компоненте. дескать, вот она должна обрабатывать. как это сделать ?


Юрий Зотов   (2006-07-27 13:43:00) [1]

> InsaneFarmer   (27.07.06 11:09)  

Одно из возможных решений - порождение потомка.

type
 TMySnoopArp = class(TSnoopArp)
 public
    procedure MyCaptureARP(Sender: TObject; PacketHeader: PPCAP_PKTHDR; EthernetHeader: PETHERNET_HDR; ARPHeader: PARP_HDR);
 end;

procedure TMySnoopArp.MyCaptureARP(Sender: TObject; PacketHeader: PPCAP_PKTHDR; EthernetHeader: PETHERNET_HDR; ARPHeader: PARP_HDR);
begin
 ... // Ваш код обработки события
end;

Теперь можно создать объект класса TMySnoopArp (вместо TSnoopArp) и назначить обработчиком его события OnCaptureARP его же собственный метод MyCaptureARP.


Сергей М.   (2006-07-27 12:40:00) [2]


> Elen ©   (27.07.06 12:37) [3]


> кажись так


Кажись как раз не так.
My() должна быть процедурным методом объекта, а не рег.процедурой.


Elen   (2006-07-27 12:37:00) [3]

кажись так
procedure My(Sender: TObject;PacketHeader: PPCAP_PKTHDR;EthernetHeader: PETHERNET_HDR;ARPHeader: PARP_HDR);
begin
//..........
end;
..........
//Где то в создании формы
<Component>.OnCaptureARPEvent:= my
.......


Сергей М.   (2006-07-27 12:27:00) [4]


> как присвоить этому компоненту свою обработку


Точно так же как если бы это был не TSnoopArp, а любой другой компонент.


DimaBr   (2006-07-27 11:39:00) [5]

Вопросы по поиску и использованию готовых компонентов, редакторов или экспертов являются нарушением тематики и могут быть удалены.


Наверх

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