AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

for-in mit TList Nachfahr

Ein Thema von tigerman33 · begonnen am 30. Jul 2005 · letzter Beitrag vom 30. Jul 2005
Antwort Antwort
tigerman33

Registriert seit: 30. Jul 2005
Ort: München
423 Beiträge
 
Delphi 2005 Professional
 
#1

for-in mit TList Nachfahr

  Alt 30. Jul 2005, 08:55
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!

Irgendwie wird da wohl immer noch die Items property vom Vorfahr (also TList) aufgerufen, aber wie kann ich denn das umgehen?!?

Delphi Rulez!
Christian
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#2

Re: for-in mit TList Nachfahr

  Alt 30. Jul 2005, 09:01
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:
public
  function getCurrent : DeineKlasse;
  property Current : DeineKlasse read getCurrent;
  function MoveNext : Boolean;
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...

OT: Klappt das eigentlich in D.Net?
  Mit Zitat antworten Zitat
tigerman33

Registriert seit: 30. Jul 2005
Ort: München
423 Beiträge
 
Delphi 2005 Professional
 
#3

Re: for-in mit TList Nachfahr

  Alt 30. Jul 2005, 09:11
Danke werd ich mal ausprobieren
Christian
  Mit Zitat antworten Zitat
Benutzerbild von GuenterS
GuenterS

Registriert seit: 3. Mai 2004
Ort: Österreich > Bad Vöslau
760 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: for-in mit TList Nachfahr

  Alt 30. Jul 2005, 12:25
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.
Günter
Pünktlichkeit ist die Fähigkeit vorherzusagen um wieviel sich der Andere verspäten wird.
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#5

Re: for-in mit TList Nachfahr

  Alt 30. Jul 2005, 12:48
dann sieht der code schöner aus *g*

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.
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#6

Re: for-in mit TList Nachfahr

  Alt 30. Jul 2005, 12:52
Zitat von GuenterS:
Aber kann mir jemand sagen worin denn eigentlich der Vorteil für For In besteht
Der code, der deine Container verwendet ist wesentlich lesbarer, außerdem ist es zum Beispiel für nicht-array-basierte Container enorm vortielhaft, da man dort oftmals keine wirkliche Indexierung hat.
Der Enum würde sich von Knoten zu knoten hangeln ohne das du in deinem Code mit den Knoten hantieren müsstest.
Zitat von GuenterS:
, wenn ich dazu nun doch wieder erst Enumeratoren, etc. schreiben muss? Dann könnt ich ja gleich ne gewöhnliche for Schleife verwenden.
Tja, genau das ist der Punkt, den ich einfach nicht kapiere.
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.
Da for in eindeutig durch .Net inspiriert wurde, sollte man eigentlich erwarten können, dass man eine halbwegs konsequente "Kopie" davon bekommt...
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:21 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz