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

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

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

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

コメント