Вопрос

Я пытаюсь включить idUDPServer компонент (компонент Indy) в проекте C ++ Builder XE и когда я пытаюсь включить onUDPRead Событие (вручное связывание с компонентом из -за известной ошибки в C ++ Builder XE).

Все статьи, которые я прочитал до сих пор решает эту проблему, вручную назначить функцию события компоненту.

В моем случае я не могу скомпилировать, потому что не может распознать TArray<System.Byte> параметр. Я попытался включить <System.hpp> Но это не помогает.

Есть ли кто -нибудь, кто удалось решить эту проблему с TArray?

Объявление функции:

void __fastcall UDPServerUDPRead(TIdUDPListenerThread *AThread, TArray<System.Byte> AData, TIdSocketHandle *ABinding);

Заранее спасибо...

Это было полезно?

Решение

Хорошо, я решил это.

Я вспомнил, что успешно обновил более ранний проект, используя idUDPServer контроль без какой -либо проблемы. Так почему же этот код скомпилировал, а не этот новый?

После некоторых исследований я обнаружил, что, по -видимому, Delphi (я знаю, это странно. Строитель C ++ написан частично в Delphi) решает все типы в своей базовой форме, и есть проблема с TArray<System.Data> тип.

Я скопировал декларацию из преобразованного проекта:

void __fastcall UDPServerUDPRead(TIdUDPListenerThread *AThread, TIdBytes AData, TIdSocketHandle *ABinding);

Как видите TArray<System.Data> заменяется TIdBytes. Анкет Он компилируется без каких -либо предупреждений или ошибок. Вы все еще должны назначать функцию события вручную, хотя (в событии Create).

UDPServer->OnUDPRead = &UDPServerUDPRead;

* РЕДАКТИРОВАТЬ *Обновленный код TBytes к TIdBytes Как Реми Лебо - Teamb исправил меня.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top