2010-11-19 17 views
2

この質問は、Indy IdUDPServerコンポーネントでOnUDPReadイベントを割り当てるときに発生しました。 (DelphiXE Update 1)Delphiのジェネリックメソッドで型識別子を完全修飾するにはどうすればよいですか?

次の自動生成コードは、 "Expected '>' 'ですが、'。 ' "が見つかり:

procedure TForm1.IdUDPServer1UDPRead(AThread: TIdUDPListenerThread; 
    AData: TArray<System.Byte>; ABinding: TIdSocketHandle); 

私は宣言を変更することでこの問題を回避することができます将来の参考のために

procedure TForm1.IdUDPServer1UDPRead(AThread: TIdUDPListenerThread; 
    AData: TArray<Byte>; ABinding: TIdSocketHandle); 

、どのように私は完全に汎用的な方法でタイプ識別子を修飾するのですか?

答えて

4

完全修飾型の識別子は(まだ)サポートされていません。しかし、タイプエイリアスを使用してこれを回避することができます:

type 
    TMyByte = System.Byte; 

procedure TForm1.IdUDPServer1UDPRead(AThread: TIdUDPListenerThread; 
    AData: TArray<TMyByte>; ABinding: TIdSocketHandle); 
+0

ありがとう。私はこれを考えていたはずですが、私はちょうど参照を修飾する直接的な方法があることを期待していました。 Quality Centralを見て、投票するバグレポートがあるかどうかを調べます。 – HMcG

+1

このような手動typedefの使用は、Embarcaderoがtypedefを基底型に解決することを最終的に止めるまで必要です。 OnUDPReadイベントは技術的にはTIdBytesをパラメータとして解釈しますが、DelphiのすべてのバージョンでこれまでDynamicArray またはTArray のいずれかに直接解決されています。これはかなり厄介で、この種の問題につながります。 –

+0

@Remy Lebeau - ああ、生成されたコードはIdUDPServerコードでは指定されていませんが、IDEによって生成されますか?私はそれを実現しませんでした。 – HMcG

関連する問題