Delphi-PRAXiS

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

jim_raynor 23. Dez 2005 09:46

Re: FOR Schleife mit Schrittweite STEP...
 
Mit Assembler kannst du den Compiler Austricksen und die Laufvariable manipulieren, allerdings ist es nicht ratsam, da der Compiler die Schleife optimiert und eventuell rückwärts zählt. Dann hast du ein Problem ;)

alcaeus 23. Dez 2005 10:17

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

Zitat von jim_raynor
allerdings ist es nicht ratsam, da der Compiler die Schleife optimiert und eventuell rückwärts zählt. Dann hast du ein Problem ;)

Nicht wenn der Compiler sieht, dass das Rueckwaertszaehlen eine Veraenderung des Ablaufs zur Folge hat ;)
Evtl. kann man immer noch die Optimierung ausmachen. ;)

Greetz
alcaeus

monta 23. Dez 2005 12:57

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

Zitat von alcaeus
Willkommen im Business der Endlosschleifen. Nene, du musst die Laufvariable wenigstens inkrementieren ;)

Da müsste natürlich ne for-Schleife drum, so ist ja totaler quatsch :wall:

sakura 23. Dez 2005 13:11

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

Zitat von Klaus01
So sollte es auch gehen,

Sicherlich, aber warum :shock: Es ist einerseits viel schlechter nachzuvollziehen, andererseits durch das stete multiplizieren auch viel langsamer. :gruebel:

...:cat:...


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