Forum: Die Delphi-IDE
by himitsu,
29. Mai 2015
Nein, außerhalb der Schleife ist die Schleifenvariable per se immer "ungültig".
Ja, es kann "zufällig" mal sein, daß die Variable danach noch den selben Wert hat, aber wenn hier eine der möglichen Optimierungen zuschlägt, dann war's das damit.
* der Compiler lässt intern die Zählung eventuell rückwärts laufen, wenn er das für optimaler erachtet
* oder er lässt die Variable wärend der...
Forum: Die Delphi-IDE
by himitsu,
28. Mai 2015
Jupp, so schnell wie möglich melden.
Jede Stunde früher scheint 'nen Monat eher bereinigt zu sein.
Man könnte noch schauen, was die verschiedenen Compiler dazu sagen (Win64, iOS32, iOS64, OSX, Linux, ...)
und mit oder ohne Generics.
Forum: Die Delphi-IDE
by himitsu,
28. Mai 2015
Hab's nicht getestet (hier im XE oder 7), aber es ist/wäre vollkommen korrekt, wenn bei WriteLn(arrayIndex); eine Warnung kommt, daß die Variable dort nicht (mehr) initialisiert ist, denn das ist sie auch nicht.
Hab das "nicht" nicht gelesen.
Hmmm, entweder ein Bug ... kann daheim dann nochmal nachsehn, aber mir ist so, als wenn da immer gewarnt wurde (wobei ich sowas selten mach)
Forum: Die Delphi-IDE
by himitsu,
28. Mai 2015
for arrayIndex := Low(myArray) to High(myArray) do
begin
if (arrayIndex = 42) then
Break;
end;
WriteLn(arrayIndex); // Die Variable ist außerhalb natürlich undefiniert, da Schleifenvariablen nach der Schleife keinen definierten Zustand besitzen. :roll:
"kann nach Durchlauf undefiniert sein" und "Variable nicht initialisiert" ist ja im Grunde das Selbe Gleiche.
Aber man weiß ja,...