Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Foreach: Wie heisst "I" (https://www.delphipraxis.net/150980-foreach-wie-heisst-i.html)

WoGe 2. Mai 2010 10:20


Foreach: Wie heisst "I"
 
Hallo

da Delphi ja jetzt (endlich) die ForEach - Schleife kennt, gibt es eine Möglichkeit auf die Iterationsvariable zuzugreifen?

so in etwa:

Delphi-Quellcode:
for c in mystring do
begin
  if odd(i) then...
end;
Grüsse
wo

DeddyH 2. Mai 2010 10:27

Re: Foreach: Wie heisst "I"
 
Ich hab das Konstrukt zwar noch nie benutzt, aber müsste das nicht gehen?
Delphi-Quellcode:
for c in mystring do
begin
  if odd(Ord(c)) then...
end;

igel457 2. Mai 2010 10:34

Re: Foreach: Wie heisst "I"
 
Zitat:

Zitat von WoGe
da Delphi ja jetzt (endlich) die ForEach - Schleife kennt, gibt es eine Möglichkeit auf die Iterationsvariable zuzugreifen?

Nein, ich denke du musst manuell zählen, da ForEach intern nur eine Iteratorklasse verwendet, die nur eine Funktion "Next" und "Current" kennt.

Siehe: http://de.wikipedia.org/wiki/Iterato...wurfsmuster%29

SirThornberry 2. Mai 2010 10:35

Re: Foreach: Wie heisst "I"
 
das sollte definitiv nicht funktionieren. Denn c enthält/ist das Element und mit odd castest du das Element lediglich zu einem Zahlentyp. Enthält der String also ein Leerzeichen welches den Wert 32 hat würdest du dann mit deinem Konstruct 32 bekommen aber keinesfalls den Schleifenzähler.

DeddyH 2. Mai 2010 10:36

Re: Foreach: Wie heisst "I"
 
Jetzt, wo Ihr es sagt: er will ja den Index und nicht den aktuellen Wert an dessen Position. Man sollte schon richtig lesen :oops:

WoGe 2. Mai 2010 10:41

Re: Foreach: Wie heisst "I"
 
Schade..

aber trotzdem vielen Dank

Gruss
wo

himitsu 2. Mai 2010 11:05

Re: Foreach: Wie heisst "I"
 
Im Prinzip gibt es hier nicht den Index, wozu auch, dafür ist diese Schleife auch nicht entwickelt wurden.

Wenn du einen Index willst, dann mußt du eben eine normale For-To-Schleife verwenden.
Und in Bezug auf einen verwendeten Enumerator muß es nichtmal etwas wie einen Index geben.

Reinhard Kern 2. Mai 2010 13:48

Re: Foreach: Wie heisst "I"
 
Zitat:

Zitat von himitsu
...
Und in Bezug auf einen verwendeten Enumerator muß es nichtmal etwas wie einen Index geben.

Aber reproduzierbar wird die Folge ja schon sein, zumindest solang nichts dran geändert wird. Er könnte ja in jedem Fall eine Variable i in der Schleife mit hochzählen, es gibt bloss keine Garantie, dass c[i] immer das gleiche meint. Es bleibt also die Frage, wozu die Zahl überhaupt gut sein soll. Das Abzählen etwa von ungeraden Zahlen in einer Menge beliebiger Zahlen ist aber kein Problem.

Gruss Reinhard


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:34 Uhr.

Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf