Einzelnen Beitrag anzeigen

Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.016 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#422

AW: Delphi 2011 heißt jetzt Delphi XE

  Alt 20. Aug 2010, 13:22
Zitat:
2. generics funktionieren nicht zu 100%
Kann mich bei 2010 eigentlich nicht wirklich beklagen. (Leider bin ich beruflich auf 2009 eingeschränkt, kann die also vergessen)
Einige Beispiele, mit denen ich selber zu kämpfen habe/hatte und noch keine bzw sehr inakzeptable Lösungen gefunden habe:
  • IEnumerable/IEnumerable<T>, IEnumerator/IEnumerator<T>, IComparable/IComparable<T> (aus System.pas!):
    Die generische Version leitet von der non generischen Version ab, was beim Implementieren der generischen Version probleme macht, da in Delphi im Gegensatz zu .Net (wo man dies offensichtlich abgeschaut hat) nicht alles ein Object ist (die non generischen Versionen benutzen als Typ TObject) so dass man zu recht umständlichen Workarounds greifen muss.
    Außerdem werden diese Interfaces nichtmal in Generics.Collections benutzt, wo TList<T> von TEnumerable<T> abgeleitet wird, aber TEnumerable<T> in keinem Fall IEnumerable<T> implementiert. Durchaus nachvollziehbar, da man hier auf die Problematik Referenzzählung oder nicht stoßen würde. Trotzdem inkonsequent zu Ende gedacht.
  • Doppelte Typendefinitionen von TCollectionNotification in Classes.pas und Generics.Collections.pas (gibts nen QC Eintrag zu von mir) was nicht kritisch ist, aber auch hier wieder zeigt, dass scheinbar die Personen die an beiden Seiten gearbeitet haben nicht kommuniziert oder nachgeschaut haben.
  • Generics nach wie vor nicht in Interfaces einsetzbar. Hab ich schon in diesem Thread erwähnt, dass ein IService<T> = interface nicht geht. Ein procedure Swap<T>(a, b: T) geht auch nicht, dann muss man diese Methode in eine Klasse packen, weil nur Methoden parametrisiert werden können, Routinen aber nicht.
Es gibt noch mehr Fälle wo ich auf die Nase gefallen bin, weil ich einfach was bauen wollte, was in .Net ohne Probleme gegangen wäre, aber nunmal nicht in Delphi, weil mir dort der Compiler den Dienst verweigert hat, nicht selten mit nem Internal Error was weiß ich. Manchmal konnte ich noch eine Lösung finden. Schonmal versucht, dass Multicast Event von Allen Bauer nachzubauen? Keine Ahnung wie oft ich dort geflucht habe bis es lief.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat