Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.08.13;
Скачать: 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 вся ветка

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

Наверх




Память: 0.48 MB
Время: 0.068 c
1-1151778976
leonidus
2006-07-01 22:36
2006.08.13
Глюки при использовании строк Widestring в операторе IF


15-1151925090
Stanislav
2006-07-03 15:11
2006.08.13
Авторизация на сайте


3-1149505937
WhiteBarin
2006-06-05 15:12
2006.08.13
Где взять FastReport


3-1149885157
Андрей11111
2006-06-10 00:32
2006.08.13
Поиск как в на платформе F1


2-1153989869
crazy_corpse
2006-07-27 12:44
2006.08.13
Opera вместо IE