Delphi-Quellcode:
FUNCTION TestIndex:Boolean;
LABEL
Stop;
VAR
i: Integer;
BEGIN
Result := False;
FOR i:=0 TO 10 // Schleife 1
DO ;
IF i = 8
THEN ;
// [DCC Warning] Test.pas(12): W1037 FOR-Loop variable 'i' may be undefined after loop
FOR i:=0 TO 10 // Schleife 2
DO IF i = 8
THEN Break;
IF i = 8
THEN ;
// Keine Warnung
// Diese Zeilen hinzufügen
// Dann wird es lustig:
FOR i:=0 TO 10 // Schleife 3
DO IF i = 8
THEN GOTO Stop;
Stop:
IF i = 8
THEN ;
[DCC Warning] Test.pas(27): W1037 FOR-Loop variable 'i' may be undefined after loop
[DCC Warning] Test.pas(12): W1037 FOR-Loop variable 'i' may be undefined after loop
[DCC Warning] Test.pas(27): W1037 FOR-Loop variable 'i' may be undefined after loop
[DCC Warning] Test.pas(12): W1037 FOR-Loop variable 'i' may be undefined after loop
END;
Na ja, vielleicht vom Übergang von früheren Delphiversionen auf Delphi5 an klappte die Technik von Schleife 2 und man konnte sich das Hochzählen einer temporären Variablen parallel zum Schleifenindex sparen. Jedenfalls schien mir das durch die nun fehlende Warnung gerechtfertigt zu sein. Ich habe das dann bis jetzt (D2010) ziemlich intensiv genutzt und bin auch noch nicht hingefallen
Aber was da nach dem Hinzufügen von Schleife 3 angezeigt wird, macht einen natürlich nachdenklich.