Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Gibt es ein downto-Äquivalent in der generischen for in List Syntax? (https://www.delphipraxis.net/195695-gibt-es-ein-downto-aequivalent-der-generischen-list-syntax.html)

Codehunter 19. Mär 2018 08:42

Delphi-Version: 10.2 Tokyo

Gibt es ein downto-Äquivalent in der generischen for in List Syntax?
 
Moin!

Die klassische for-Syntax kennt ja
Delphi-Quellcode:
for I:= 0 to X
// und
for I:= X downto 0
die neue for-Syntax für generische Listen kennt aber meines Wissens nur eine Richtung:
Delphi-Quellcode:
for T in List
oder gibt es da noch eine "Rückwärts-Syntax"?

Grüße
Cody

Fritzew 19. Mär 2018 08:50

AW: Gibt es ein downto-Äquivalent in der generischen for in List Syntax?
 
Das Zauberwort ist hier generisch,
2 Möglichkeiten :
Sortiere deine Liste entsprechend oder überschreibe den enumerator

Uwe Raabe 19. Mär 2018 09:44

AW: Gibt es ein downto-Äquivalent in der generischen for in List Syntax?
 
Zitat:

Zitat von Codehunter (Beitrag 1396570)
die neue for-Syntax für generische Listen kennt aber meines Wissens nur eine Richtung:

Eigentlich gibt es bei for-in keine Richtung. Der interne Enumerator bestimmt die Reihenfolge. Die kann theoretisch sogar zufällig sein.

himitsu 19. Mär 2018 09:47

AW: Gibt es ein downto-Äquivalent in der generischen for in List Syntax?
 
Oder definiere einen eigenen Enumerator.

Delphi-Quellcode:
for x in list.GetEnumerator do
wird vom Compiler implizit genommen, aber man kann solch eine Funktion auch explizit angeben, mit anderem Namen.

Klaus01 19. Mär 2018 10:18

AW: Gibt es ein downto-Äquivalent in der generischen for in List Syntax?
 
.. wenn ich dann Listenelemente in der for in Schleife lösche,
fällt mir das dann vor die Füsse?

Oder sollte ich dafür dann besser die for .. downto .. do Schleife nehmen?

Grüße
Klaus

himitsu 19. Mär 2018 10:43

AW: Gibt es ein downto-Äquivalent in der generischen for in List Syntax?
 
ja.

Der Standardenumerator hat damit Probleme.
ABER, du kannst einen anderen Enumerator verwenden/bauen.

Bei einigen Listen gibt es ein property ala List.ToArray , und den Enumerator dieses Arrays kannst du nutzen.
Dieser Enumerator hat zwar auch das selbe Problem, alledings läuft er hier dann über eine Kopie des Inhalts, welche sich nicht verändert. Nur Referenzen muß aufgepasst werden, dass nicht nach dem Löschen nochmal auf den Inhalt dieses Items zugegriffen wird.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:45 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