Delphi-PRAXiS
Seite 4 von 4   « Erste     234   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Achtung. Optimierung beim Compiler (https://www.delphipraxis.net/152027-achtung-optimierung-beim-compiler.html)

Assertor 11. Jun 2010 11:00

AW: Achtung. Optimierung beim Compiler
 
Zitat:

Zitat von DelTurbo (Beitrag 1027954)
EDIT:
Zitat:

Zitat von Assertor (Beitrag 1027916)
Um die Eingangsfrage zu beantworten: Ja, das Verhalten ist bekannt.

Das wusste ich nicht. Da ich ja blutiger anfänger bin und mich kaum im netz rumtreibe, laufen solchen speziellen info an mir vorbei.

Was ich eigentlich nur erreichen wollte ist, das nicht andere auf diese sache reinfallen. Und keines falls einen Thread erzeugen der nun 3 Seiten lang ist. Eigentlich war es nur als info gedacht.


Macht doch nichts, jeder hat mal angefangen... Aber in der DP hättest Du das auch finden können (sf Optimierung, Schleife):
http://www.delphipraxis.net/89407-co...mierung-2.html
http://www.delphipraxis.net/122117-v...definiert.html

Es soll auch im Delphi Language Guide stehen, das habe ich jetzt aber nicht nachgesehen.

Ich habe Dein Beispiel gerade getestet: Es bringt keine Warnung unter Delphi 2010. Das liegt daran, dass es ja genau der dokumentierte Sonderfall ist, den ich zuvor erwähnte (siehe aktuellere Delphi Hilfe).

Es gibt ohne Break auf jeden Fall eine Warnung:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  i: Integer;
  j: Integer;
begin
    MyArray[5]:=True;
    for i:=low(MyArray) to high(MyArray) do begin
      // if MyArray[i] then break;
      j := i;
    end;
    Label1.Caption:='i ist:'+IntToStr(i);
end;
Bringt:
Zitat:

[DCC Warning] Unit1.pas(37): W1037 FOR-Loop variable 'i' may be undefined after loop
Gruß,
Assertor

Stevie 11. Jun 2010 11:07

AW: Achtung. Optimierung beim Compiler
 
Zitat:

Zitat von Stevie (Beitrag 1028072)
Im Debugger sieht man auch nix vom rückwärts laufen, sondern nur im asm code (wurde auch im Eingangspost erwähnt)

Korrektur: Sofern man i nicht innerhalb der Schleife verwendet, kann man auch im Debugger sehen, dass runtergezählt wird. Verwendet man i nach der Schleife (trotz warning) kann es vorkommen, dass nicht abwärts gezählt wird. Der Wert von i nach der Schleife stimmt trotzdem nicht.

DelTurbo 11. Jun 2010 11:15

AW: Achtung. Optimierung beim Compiler
 
Zitat:

Zitat von Assertor (Beitrag 1028087)
Ich habe Dein Beispiel gerade getestet: Es bringt keine Warnung unter Delphi 2010.

Danke, das ist genau das was ich wissen wollte.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:20 Uhr.
Seite 4 von 4   « Erste     234   

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