![]() |
Re: Fehler in Delphi mit For-Schleife
Zitat:
Es ist dann ein bisschen verwirrend, da ich im Code auf das Arrayelement mit einem Index zugreife, auf dem eigentlich nur Bockmist steht, aber es trotzdem funktioniert. Ergo: Sowohl die Tooltips stimmen, als auch die Compileroptimierung und die Reihenfolge des Zugriffs auf die Arraywerte, und der Hausbau wuerde somit immernoch beim Keller anfangen ;) greetz Mike [Edit] Ich werd zu langsam, und meine Affaere mit dem Roten Kasten geht auch in die Brueche :cry: |
Re: Fehler in Delphi mit For-Schleife
Gückgück:
![]() Insbesondere die Beiträge von mir und Hagen. |
Re: Fehler in Delphi mit For-Schleife
@s.h.a.r.k und Alle mit BDS2006: Funktioniert das denn oder nicht? Das ist doch das Einzige, was zählt.
|
Re: Fehler in Delphi mit For-Schleife
Ich suche gerade nach einem einfachen Beispiel, einfach deshalb damit der ASM Code im CPU-Fenster übersichtlich bleibt. Leider bisher ohne Erfolg:
Delphi-Quellcode:
Wie müsste eine Schleife aussehen, die optimiert wird und somit rückwärtsläuft? Aber sie muss möglichst einfach sein. So bald man ShowMessage oder gar IntToStr aufruft, geht es im CPU-Fenster wild durch alle möglichen calls durch. :?
procedure TForm1.Button1Click(Sender: TObject);
var i: Integer; IntArray: Array of Integer; begin SetLength(IntArray, 10); for i := 0 to 9 do IntArray[i] := i; end; |
Re: Fehler in Delphi mit For-Schleife
Bei mir hat das gereicht:
Delphi-Quellcode:
i wird auf 6 initialisiert und bis 0 runtergezaehlt, in r steht nach der Schleife 15 drinnen. Es funktioniert also, sowohl D7, als auch DS06...
var
ar: array[0..5] of integer = (0, 1, 2, 3, 4, 5); //... var i, r: integer; begin r := 0; for i := 0 to 5 do begin inc(r, ar[i]); end; ShowMessage(IntToStr(r)); //Wird benoetigt, damit ueberhaupt was mit r gemacht wird (ansonsten wird das inc von der Optimierung weggeschnibbelt) end; Zitat:
greetz Mike |
Re: Fehler in Delphi mit For-Schleife
warum nutzt du length?
funktioniert folgendes nicht?
Delphi-Quellcode:
for i:=low(arr) to high(arr) do
|
Re: Fehler in Delphi mit For-Schleife
Zitat:
Greetz alcaeus |
Re: Fehler in Delphi mit For-Schleife
Zitat:
|
Re: Fehler in Delphi mit For-Schleife
Ich bekomm echt die Krise... Ihr sagt doch, dass die Compiler-Optimierung bei mir zugeschlagen hat und da was verdreht hat. Wird diese Optimierung jedes mal bei mir angewandt oder kommt das jedes mal aufs neue drauf an.
Mir scheint, dass der Compiler da lustig ist und des macht wie er will... Einmal zählt er von oben nach unten, dann mal wieder so wie ich es gedacht habe, von 0 bis 5, dann mal wieder anders herum... Wieso? Nachdem ich jetzt meinen PC neu gestartet habe klappt es immer mit der for-Schleife. Aber wieso denn? Wenn dann muss es doch immer das selbe Phenomän sein oder? mfg shark |
Re: Fehler in Delphi mit For-Schleife
Sagen wirs so: Die Compileroptimierung ist so ausgelegt, dass sie keinen Einfluss auf die Ausgabe des Programms hat. Und soweit ich das beobachten konnte passt das auch.
Was das in diesem Thread (und dutzenden anderen) besprochene Phaenomen betrifft ist die Verwirrung die gestiftet wird, wenn optimierter Code debuggt wird. Der sieht naemlich ploetzlich etwas anders aus :shock: :stupid: Er funktioniert auch etwas anders, das Ergebnis bleibt aber das selbe. Sollte es zumindest. Um rauszufinden, wo der Fehler jetzt liegt (an der Optimierung oder nicht) hilft es, einfach einmal die Schleife so zu probieren, und einmal mit ausgeschalteter Optimierung. {$O+/-} muesste AFAIR die denentsprechende Compiler-Direktive sein. Wenn der Fehler tatsaechlich dort liegt (und es also ein reproduzierbarer Bug ist) kannst du den dann hier in der DP oder in der QualityCentral posten. greetz Mike |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:58 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-2025 by Thomas Breitkreuz