Вниз
Скачать: CL | DM;

Присвоить св-ву объекту процедуру   Найти похожие ветки 

 
InsaneFarmer   (2006-07-27 11:09) [0]

Здравствуй, 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;


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


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

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


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


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


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


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

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


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


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


> кажись так


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


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

> 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.



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

Скачать: CL | DM;



Память: 0.46 MB
Время: -0.962 c
2-1153808000
ctudent
2006-07-25 10:13
2006.08.13
Настройка модема


2-1153734378
Михаил И.
2006-07-24 13:46
2006.08.13
ListSource


4-1145378482
Dust
2006-04-18 20:41
2006.08.13
Получить адрес функции из указателя на метод


2-1153736526
Frojok
2006-07-24 14:22
2006.08.13
Закрыть приложение


1-1151674445
doddoindan
2006-06-30 17:34
2006.08.13
Построение элементов




   Наверх