Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.049 c
1-1151294438
Rentgen
2006-06-26 08:00
2006.08.13
Rave report и рамер страницы в TRvNDRWriter


1-1151778976
leonidus
2006-07-01 22:36
2006.08.13
Глюки при использовании строк Widestring в операторе IF


6-1143428539
Denisac
2006-03-27 07:02
2006.08.13
Кодировка в сообщении


2-1153655617
vain
2006-07-23 15:53
2006.08.13
Сливание вспомогательных файлов


3-1149402157
SamProf
2006-06-04 10:22
2006.08.13
Как найти запись и изменить





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский