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 läuft nicht richtig ? (https://www.delphipraxis.net/35208-schleife-laeuft-nicht-richtig.html)

dEluXe 3. Dez 2004 21:26


for-Schleife läuft nicht richtig ?
 
HiHo,

hab da mal ein merkwürdiges Problem.

Also ich hab in meinem Programm im onCreate-Ereignis (und auch noch in anderen Prozeduren) eine for-Schleife eingebaut (eigentlich 2, die ineinander laufen):

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var
 x, y: Integer;
begin
 for x := 1 to 16 do
  begin
   for y := 1 to 16 do
    begin
     array_xyz[x,y].wert := 0;
    end;
  end;
end;
eigentlich müsste er jetzt doch in den einzelnen Schleifen jeweils die Variable x/y von 1 hochzählen bis auf 16 !

aber wenn ich jetzt in Einzelschritten die Prozedur durchlaufe und die Werte der Variablen überprüfe, fangen beide Schleifen nicht bei 1 sondern bei 16 an zu zählen und gehen bis zur 1 runter. :(

Meiner Meinung nach hat das aber sonst immer richtig (1 -> X) funktioniert.

Weiß einer wodran das liegen kann ?

Vielen Dank im Voraus

dEluXe

supermuckl 3. Dez 2004 21:27

Re: for-Schleife läuft nicht richtig ?
 
So etwas habe ich auch schon festgestellt. aber nicht immer der Fall, deshalb denke ich, das es eine Optimierung des Compilers ist.

Luckie 3. Dez 2004 21:29

Re: for-Schleife läuft nicht richtig ?
 
Delphi optimiert die Schleife. Und wenn es günstiger ist runterzuzählen statt hoch und es keinen unterschied macht, dann läßt der Compiler die Schleife anders rum laufen.

Es ist nämlich in ASM einfacher ein Register auf 0 zu prüfen, als zwei Werte miteinander zu vergleichen.

dEluXe 3. Dez 2004 21:53

Re: for-Schleife läuft nicht richtig ?
 
Ahhh...

Das hört sich gut an. Bei mir wird halt bloss ein array gefüllt also isses ja egal in welcher Richtung das abläuft. :idea:

Vielen Dank für die schnellen Antworten

dEluXe

arbu man 4. Dez 2004 12:46

Re: for-Schleife läuft nicht richtig ?
 
versuchs mal mit until repeat :-D

alcaeus 4. Dez 2004 12:53

Re: for-Schleife läuft nicht richtig ?
 
Erstens heißt es repeat until :zwinker:
Zweitens wird die Optimierung AFAIK auch bei einer repeat until-Schleife zuschlagen. Die Compileroptimierung kannst du aber auch in den Optionen ausschalten, leider weiß ich im Moment nicht genau wo...

Greetz
alcaeus


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