ksey3000
@ksey3000
Инженер-сетевик. Программирование-хобби.

Как назначить обработчик события для динамически созданного компонента Internet Direct (Indy)?

Среда разработки - Embarcadero® C++Builder 10 Seattle.

Динамически создаю компонент TIdTelnet:
TIdTelnet *ScanIdTelnet=new TIdTelnet(this);

Согласно документации с сайта indyproject.org для назначения обработчика на событие OnDataAvailable необходимо этому свойству присвоить функцию, обрабатывающую это событие.

Делаю так:
// создаю функцию для обработки события
TIdTelnetDataAvailEvent IdTelnetDataAvailable(TIdTelnet *Sender, const TIdBytes Buffer)
{
	// тут что-то делаем с данными из Buffer
}
// назначаю
ScanIdTelnet->OnDataAvailable=IdTelnetDataAvailable;


При компиляции ругается:
[bcc32 Error] AddDevice.cpp(489): E2034 Cannot convert 'TIdTelnetDataAvailEvent' to 'TIdTelnetDataAvailEvent'


Что делаю не так? Как сделать правильно?

Update:
Разобрался. Делаем так:
В классе родителского компонента (формы) прописываем:
class TAddDeviceDialog : public TForm
{
__published:	// IDE-managed Components

private:	// User declarations
	TIdTelnet *ScanIdTelnet;
	void __fastcall IdTelnetDataAvailable(TIdTelnet *Sender, const TIdBytes Buffer);

public:		// User declarations

};


В программе:
void __fastcall TAddDeviceDialog::StartScanButtonClick(TObject *Sender)
{
	ScanIdTelnet=new TIdTelnet(this);
        ScanIdTelnet->Host=sIP;
	ScanIdTelnet->OnDataAvailable=IdTelnetDataAvailable;
        try
	{
		ScanIdTelnet->Connect();
	}
	catch (EIdException &exception)
	{
	         //sError=exception.Message; // Текст ошибки
	}
}

// обработчик OnDataAvailable 
void __fastcall TAddDeviceDialog::IdTelnetDataAvailable(TIdTelnet *Sender, const TIdBytes Buffer)
{
	// тут что-то делаем с данными из Buffer
}
  • Вопрос задан
  • 373 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы