![]() |
for-in mit TList Nachfahr
Hi,
warum funktioniert die neue for-in Anweisung nicht mit Nachfahren von TList? Hab die default Eigenschaft Items überschrieben und als Rückgabetyp ne eigene Klasse eingesetzt. Der Compiler meldet jedes mal nen Fehler weil for-in aus irgendeinem Grund nen pointer zurückgibt! :x Irgendwie wird da wohl immer noch die Items property vom Vorfahr (also TList) aufgerufen, aber wie kann ich denn das umgehen?!? Delphi Rulez! |
Re: for-in mit TList Nachfahr
Du musst einen eigenen Enumerator schreiben und deinen TList-Nachfahren mit einem GetEnumerator bestücken, dass diesen Enumerator zurückgibt.
Der Enum muss das hier besitzen um als solcher erkannt zu werden:
Delphi-Quellcode:
BTW: Schicke von mir bitte auch ein Dankeschön an denjenigen, der das verhunzt hat. Keine Ahnung warum D2005 so blöde ist, dass es nicht einfach einen Typecast auf den ITem typen propbiert, mit dem du iterieren willst... :wall:
public
function getCurrent : DeineKlasse; property Current : DeineKlasse read getCurrent; function MoveNext : Boolean; OT: Klappt das eigentlich in D.Net? :gruebel: |
Re: for-in mit TList Nachfahr
Danke werd ich mal ausprobieren
|
Re: for-in mit TList Nachfahr
Sorry für OT:
Aber kann mir jemand sagen worin denn eigentlich der Vorteil für For In besteht, wenn ich dazu nun doch wieder erst Enumeratoren, etc. schreiben muss? Dann könnt ich ja gleich ne gewöhnliche for Schleife verwenden. |
Re: for-in mit TList Nachfahr
dann sieht der code schöner aus *g* :mrgreen:
es wird zumindest sehr viel klarer, wenn man nicht immer überall [i] dranhängen hat. im übrigen steigt da dann auch die codevervollständigung öfters aus. |
Re: for-in mit TList Nachfahr
Zitat:
Der Enum würde sich von Knoten zu knoten hangeln ohne das du in deinem Code mit den Knoten hantieren müsstest. ;) Zitat:
In .Net-Sprachen wird ein "foreach" bzw. "for in" versuchen Enum.Current auf den Item typen zu boxen. In D2005 nicht, wodurch jeder Nachfahre eines generisch gehaltenen Containers (wie TList) alles neu implementieren muss. :wall: Da for in eindeutig durch .Net inspiriert wurde, sollte man eigentlich erwarten können, dass man eine halbwegs konsequente "Kopie" davon bekommt... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:32 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz