Einzelnen Beitrag anzeigen

Sailor

Registriert seit: 20. Jul 2008
Ort: Balaton
112 Beiträge
 
Delphi 2010 Professional
 
#13

AW: Compiler warnt nicht vor nicht initialisierter Variable

  Alt 29. Mai 2015, 14:58
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.
  Mit Zitat antworten Zitat