Форум: "Начинающим";
Текущий архив: 2006.08.13;
Скачать: [xml.tar.bz2];
ВнизПрисвоить св-ву объекту процедуру Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.041 c