C ++ Builder Tarray Не компиляция
-
28-10-2019 - |
Вопрос
Я пытаюсь включить 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 исправил меня.