C ++ Builder TArrayне компилируется - PullRequest
1 голос
/ 05 декабря 2011

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

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

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

Кто-нибудь сумел решить эту проблему с помощью TArray?

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

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

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

1 Ответ

1 голос
/ 05 декабря 2011

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

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

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

Я скопировал объявление из преобразованного проекта:

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

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

UDPServer->OnUDPRead = &UDPServerUDPRead;

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

...