2010-11-19 17 views
2

Bu soru, bir Indy IdUDPServer bileşeninde OnUDPRead olayını atamaya çalışırken ortaya çıktı. (DelphiXE Güncelleme 1)Delphi'de genel yöntemlerle tür tanımlayıcılarını tam olarak nasıl nitelendirebilirim?

şu otomatik oluşturulan kod '>' bir sözdizimi hatası "Beklenen verir ama '' "Bulunan:

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

Ben bildiriyi değiştirerek bu çalışabilirsiniz: İleride

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

, nasıl tamamen genel yönteminde tip tanımlayıcı hak kazanırım?

cevap

4

Tam nitelikli tip tanımlayıcıları (henüz) desteklenmemektedir. Ancak, bu takma adı kullanarak bunu aşabilirsiniz:

type 
    TMyByte = System.Byte; 

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

Teşekkürler. Bunu düşünmeliydim, sadece referansı nitelendirmek için doğrudan bir yöntem olmasını bekledim. Oylanacak bir hata raporu olup olmadığını görmek için Quality Central'a bakacağım. – HMcG

+1

Bunun gibi elle yazılmış bir yazımın kullanılması, yalnızca Embarcadero'nun Delphi'yi temel türlerine yazım hatalarını çözmekten vazgeçmesi için gerekli olana kadar gereklidir. parametre olarak OnUDPRead olay teknik masalları bir TIdBytes ama Delphi her sürümü bugüne kadar bunu çözdüğü ya bir DynamicArray veya oldukça can sıkıcı ve sorunların bu tür yol açar doğrudan TArray . –

+0

@Remy Lebeau - Ah, bu nedenle oluşturulan kod, IdudPServer kodunda belirtilmemiş, ancak IDE tarafından üretilmiştir? Bunu hiç fark etmedim. – HMcG

İlgili konular