![]() |
Compiler-Fehler: "Downto" statt "To"
Hi Leute,
hab mir gerade mal die Werte von i in:
Delphi-Quellcode:
angesehen.
var BA : array[97..252] of integer;
(...) procedure TForm2.BALeeren; var i:integer; begin for i:=97 to 252 do BA[i] := 0; end; Hab Strg+Alt+W gedrückt und die Variable i eingetragen. Als ersten Wert wird i mit 156 :gruebel: belegt. Und dann wird i runtergezählt auf 0!!! Was stimmt denn jetzt wieder nicht :wall: Dazu muss ich aber sagen, dass die Prozedur perfekt arbeitet, dass heißt, im gesamten Array steht im Endeffekt 0. |
Re: Compiler-Fehler: "Downto" statt "To"
Hi,
das liegt an der Compiler Optimierung. Rückwärtszählen geht schneller als vorwärtszählen und wenn es egal ist, wie rum gezählt wird, zählt der Delphi Compiler (bei eingeschalteter) Optimierung rückwärts. mfG mirage228 |
Re: Compiler-Fehler: "Downto" statt "To"
Das ist die Compileroptimierung. der mach daraus das:
Delphi-Quellcode:
Weils runterzählen einfach schneller geht ... ;-)
for i:=156 downto 0 do
BA[i + 97] := 0; |
Re: Compiler-Fehler: "Downto" statt "To"
Okay, wieder was gelernt, thx! :dp:
|
Re: Compiler-Fehler: "Downto" statt "To"
Da muss ich kurz korrigieren:
Zitat:
Greetz alcaeus |
Re: Compiler-Fehler: "Downto" statt "To"
Zitat:
Das Rückwätszählen läuft schneller ab, weil ein Vergleich auf 0 schneller ist, als auf eine andere Zahl. ;) mfG miraqe228 |
Re: Compiler-Fehler: "Downto" statt "To"
Ich glaube aber
Delphi-Quellcode:
könnte fast noch schneller sein ...
ZeroMemory (@BA, length (BA) * SizeOf (Integer))
|
Re: Compiler-Fehler: "Downto" statt "To"
Zitat:
|
Re: Compiler-Fehler: "Downto" statt "To"
optimierung abstellen ist der erfahrung nach das beste
|
Re: Compiler-Fehler: "Downto" statt "To"
Zitat:
Ob so eine Schleife nun vor- oder rückwärts läuft, macht in dem vorgestellten Fall keinen Unterschied. MfG Binärbaum |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:30 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