![]() |
Re: FOR-Schleifenvariable 'ti' kann nach Durchlauf undefinie
Hallo Shaman,
eigentlich sollte es N sein. Und wie ich bereits gesagt habe, bei mir wurde die Schleife einmal "umgedreht", warum auch immer :roll: Greetz alcaeus |
Re: FOR-Schleifenvariable 'ti' kann nach Durchlauf undefinie
Hi,
was ich eigentlich sagen wollte:
Delphi-Quellcode:
das bringt bei mir nie niemals nich ne Warnung vom Compiler, sondern erst, wenn eben nach Schleifendurchlauf was mit ti gemacht wird:
for ti := 0 TO 5 DO
begin bla; end; for ti := 0 TO 5 DO begin bla; end; for ti := 0 TO 5 DO begin bla; end;
Delphi-Quellcode:
Aber das scheint ja schon gar nimmer das Prob zu sein :mrgreen:
for ti := 0 TO 5 DO
begin bla; end; for ti := 0 TO 5 DO begin bla; end; for ti := 0 TO 5 DO begin bla; end; ShowMessage(IntToStr(i)); //<<--FOR-Schleifenvariable 'ti' kann ...... Gruß Stephan :dance: :xmas: |
Re: FOR-Schleifenvariable 'ti' kann nach Durchlauf undefinie
Hoi
Gut, ob jetzt N oder N+1, hauptsache er ist definiert. :) Das sie umgedreht ist, liegt an der Optimierung durch den Compiler. Sie sagen aber, dass das nur passiert, wenn es keine Rolle spielt, wie die Schleife durchlaufen wird. Das sollte also keine Probleme bereiten... hoffentlich :pale: Gruss Shaman |
Re: FOR-Schleifenvariable 'ti' kann nach Durchlauf undefinie
Zitat:
Nehmen wir als Beispiel diesen Code:
Delphi-Quellcode:
Hier wird die Warnung erzeugt, weil die Schleife rückwärts durchlaufen werden kann, und der Wert von i somit nicht wie erwartet 1000 sondern 0 ist.
for i := 0 to 1000 do
myarray[i] := 0; myarray[i] := 1000; Greetz alcaeus |
Re: FOR-Schleifenvariable 'ti' kann nach Durchlauf undefinie
Zitat:
naja die for-schleifen initialisieren "ti" doch aber... also undefiniert kanns nich sein oder? |
Re: FOR-Schleifenvariable 'ti' kann nach Durchlauf undefinie
Hi,
der Compiler sagt ja auch 'könnte' und nicht 'ist' :mrgreen: Gruß Stephan :dance: :xmas: |
Re: FOR-Schleifenvariable 'ti' kann nach Durchlauf undefinie
Zitat:
Gut, dass mir das jetzt klar ist :thumb: |
Re: FOR-Schleifenvariable 'ti' kann nach Durchlauf undefinie
Zitat:
auch "könnte" ist falsch, die schleifen werden 100% ausgeführt, also kriegen sie auch nen wert. |
Re: FOR-Schleifenvariable 'ti' kann nach Durchlauf undefinie
Also definiert ist eine Variable doch nur dann, wenn sie genau einen Vorhersagbaren Wert hat.
nach einer Schleife der Art for ti := 0 to 5 do MachWas (Str[ti]); MachWas (Str[ti]); ist ti -1 oder 0 (je nach Compiler Version und wenn gedreht wurde) oder 5 oder 6 (je nach Compiler Version und wenn nicht gedreht wurde) das ist undefiniert genug oder? bei delphi 1 z.B war ti nach der Schleife garantiert 5 bei delphi 7 ist ti nach der Schleife 6 und damit man sich nicht drauf verläßt kommt die warnung weil bei Delphi 8,9,10 könnts ja wieder ganz anderst sein DerDan |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:42 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