![]() |
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:
eigentlich müsste er jetzt doch in den einzelnen Schleifen jeweils die Variable x/y von 1 hochzählen bis auf 16 !
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; 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 |
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.
|
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. |
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 |
Re: for-Schleife läuft nicht richtig ?
versuchs mal mit until repeat :-D
|
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 12:32 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz