Delphi/C++Builder XE2 の TIdUDPServer で UDPRead イベントが使えない

Delphi/C++Builder XE2 の TIdUDPServer で UDPRead イベントが使えない

イベントの作成で、そもそもエラーが出るわけですが
procedure IdUDPServer1UDPRead(AThread: TIdUDPListenerThread; AData: TArray<system.byte>; ABinding: TIdSocketHandle);
それを回避して、
procedure IdUDPServer1UDPRead(AThread: TIdUDPListenerThread; AData: TArray<byte>; ABinding: TIdSocketHandle);
のようにして、データを送ってやっても、いっこうにイベントが発生していない

どうも、定義が違っているとかで、別の場所へ正しい procedure を作成して
private
    procedure IdUDPServerUDPRead(AThread: TIdUDPListenerThread; AData: TBytes; ABinding: TIdSocketHandle);
手作業でイベントを登録すればよいらしい(参照)
procedure TForm1.FormCreate(Sender: TObject);
begin
    IdUDPServer1.OnUDPRead := IdUDPServerUDPRead;
end;
文字列データの受け取りは、こんな感じ
procedure TForm1.UDPServerUDPRead(AThread: TIdUDPListenerThread; AData: TBytes; ABinding: TIdSocketHandle);
begin
    Caption := TEncoding.default.GetString(AData, 0, Length(AData));
end;

コメント