![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Присвоить св-ву объекту процедуру [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]Вопросы по поиску и использованию готовых компонентов, редакторов или экспертов являются нарушением тематики и могут быть удалены.