Einzelnen Beitrag anzeigen

Der schöne Günther

Registriert seit: 6. Mär 2013
6.110 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

Compiler warnt nicht vor nicht initialisierter Variable

  Alt 28. Mai 2015, 12:33
XE7. Windows, 32 und 64 Bit, Debug und Release.

Folgendes Beispiel:
Delphi-Quellcode:
program Project27;

{$APPTYPE CONSOLE}

{$R *.res}

procedure forProc();
var
   myArray:   TArray<Single>;
   arrayIndex:   Integer;
begin
   for arrayIndex := Low(myArray) to High(myArray) do
      if (arrayIndex = 42) then Break;

   WriteLn(arrayIndex);
   readln;
end;

begin
   forProc();
end.
Die Variable arrayIndex kann klar undefiniert sein. Zur Laufzeit ist sie es tatsächlich auch, denn das Array ist leer. In der Konsole steht dann z.B. 435345345 .

Warum warnt der Compiler davor nicht? Kommentiert man das if (arrayIndex = 42) then Break; aus, dann gibt es vernünftigerweise einen
Code:
[dcc32 Warnung] Project27.dpr(12): W1037 FOR-Schleifenvariable 'arrayIndex' kann nach Durchlauf undefiniert sein
  Mit Zitat antworten Zitat