Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi FOR Schleife mit Schrittweite STEP... (https://www.delphipraxis.net/59474-schleife-mit-schrittweite-step.html)

Foxgrove 22. Dez 2005 22:38


FOR Schleife mit Schrittweite STEP...
 
Hallo,

im BASIC kann man doch mit FOR mI = 1 to 500 STEP 5
in 5.-Schritten durch die Schleife gehen.
Kann das sein, dass die DELPHI-For-Schleife das
nicht kann?
Oder?

MfG Foxgrove

fkerber 22. Dez 2005 22:45

Re: FOR Schleife mit Schrittweite STEP...
 
Hi!

Wusst ich doch, dass ich das schon mal gelesen hatte:
http://www.delphipraxis.net/internal...ct.php?t=14764


Ciao Frederic

DP-Maintenance 22. Dez 2005 22:57

DP-Maintenance
 
Dieses Thema wurde von "Christian Seehase" von "VCL / WinForms / Controls" nach "Object-Pascal / Delphi-Language" verschoben.
Die Frage bezieht sich auf die Sprache als solche

Christian Seehase 22. Dez 2005 23:00

Re: FOR Schleife mit Schrittweite STEP...
 
Moin Foxgrove,

stimmt, Du kannst in Delphi bei For-Schleifen keine Schrittweite angeben.
Ich habe mir Frederics angegebenen Thread nicht vollständig durchgesehen, deshalb hier ein Workaround:

Delphi-Quellcode:
while i <= 500 do begin
  // Mach was in der Schleife
  inc(i,5);
end;

monta 23. Dez 2005 00:55

Re: FOR Schleife mit Schrittweite STEP...
 
also ich hab gelesen, man sollte Schleifenvariablen tunlichst nicht manipulieren :gruebel:

wäre es nicht sicherer für eine korrekte Ausführung einfach die gesamte Anweisung mittels if einzufassen:
Delphi-Quellcode:
wihlwhile i <= 500 do begin
  if i mod 5 = 0 then
  begin
  // Mach was in der Schleife
  end;
end;
was sol das überhaupt bringen, die Schleife Schrittweise auszuführen?

runger 23. Dez 2005 05:23

Re: FOR Schleife mit Schrittweite STEP...
 
Hallo,

das ist doch hier keine Schleifenvariable im eigentlichen Sinn.
Du sollst bei einer Variablen ( hier n ), die in einem For .... do
Statement vorkommt, nichts verändern.

Delphi-Quellcode:
For n:=0 to 1000 do
   begin
      // das hier solltest du besser lassen, für was auch?
      inc(n,2);
      //Tu was mit n
   end;
For n:=0 to 500 do
   begin
      // das hier funktioniert genauso
      m:=n*2;
      //Tu was mit m
   end;
Es gibt überhaupt keinen Grund step einzuführen.
Dafür benutzt man repeat ... until oder while ... do

Rainer

alcaeus 23. Dez 2005 05:26

Re: FOR Schleife mit Schrittweite STEP...
 
Zitat:

Zitat von monta
also ich hab gelesen, man sollte Schleifenvariablen tunlichst nicht manipulieren :gruebel:

wäre es nicht sicherer für eine korrekte Ausführung einfach die gesamte Anweisung mittels if einzufassen:
Delphi-Quellcode:
while i <= 500 do begin
  if i mod 5 = 0 then
  begin
  // Mach was in der Schleife
  end;
end;
was sol das überhaupt bringen, die Schleife Schrittweise auszuführen?

Willkommen im Business der Endlosschleifen. Nene, du musst die Laufvariable wenigstens inkrementieren ;)
Ob du sie dabei um 1 oder um 5 erhoehst, macht keinen Unterschied. Die Laufvariable soll man nur in for-Schleifen in Frieden lassen ;)

Greetz
alcaeus

malo 23. Dez 2005 06:32

Re: FOR Schleife mit Schrittweite STEP...
 
Zitat:

Zitat von alcaeus
Die Laufvariable soll man nur in for-Schleifen in Frieden lassen ;)

Und soweit ich weiß, hat man auch gar keine Schreibrechte auf For-Schleifenvariablen... ;) Die kann man IMHO nur lesen.

Klaus01 23. Dez 2005 07:17

Re: FOR Schleife mit Schrittweite STEP...
 
So sollte es auch gehen,

Delphi-Quellcode:
FOR i:=1 TO 500 DIV Step DO
  BEGIN
    // Tu was mit i * Step
  END;
Grüße
Klaus

runger 23. Dez 2005 07:30

Re: FOR Schleife mit Schrittweite STEP...
 
Hallo,

habs ausprobiert. Der Compiler meckert tatsächlich, wenn man versucht in For n:=1 to 100 do n zu verändern.
Ist aber nur für D7 getestet.
Im Original Pascal-Dialekt geht das und ist ausdrücklich erlaubt.
In Turbo Pascal bis 7.0 ebenfalls.

Rainer


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:03 Uhr.
Seite 1 von 2  1 2      

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