Среда разработки - 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
}