Comment puis-je bénéficier pleinement de type dans les méthodes génériques dans Delphi?
Question
Cette question a été soulevée lors d'une tentative d'assigner l'événement OnUDPRead sur un composant Indy IdUDPServer. (DelphiXE Update 1)
Le code généré automatique suivant donne une erreur de syntaxe « attendu « > » mais « » trouvé ":
procedure TForm1.IdUDPServer1UDPRead(AThread: TIdUDPListenerThread;
AData: TArray<System.Byte>; ABinding: TIdSocketHandle);
Je peux contourner en changeant la déclaration à:
procedure TForm1.IdUDPServer1UDPRead(AThread: TIdUDPListenerThread;
AData: TArray<Byte>; ABinding: TIdSocketHandle);
Pour référence ultérieure, comment puis-je définir complètement un identifiant de type dans une méthode générique?
La solution
identificateurs de type entièrement qualifiés ne sont pas (encore) pris en charge. Mais vous pouvez contourner cela en utilisant un alias de type:
type
TMyByte = System.Byte;
procedure TForm1.IdUDPServer1UDPRead(AThread: TIdUDPListenerThread;
AData: TArray<TMyByte>; ABinding: TIdSocketHandle);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow