Einzelnen Beitrag anzeigen

Der schöne Günther

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

Warum keine Compilerwarnung bei offensichtlicher Bereichsüberschreitung

  Alt 19. Sep 2014, 10:23
Delphi-Version: XE5
Ich dachte ja, ich wäre nun lange genug bei Delphi dabei, aber hiermit bin ich wieder auf die Nase gefallen:
Delphi-Quellcode:
program Project3;

{$APPTYPE CONSOLE}

{$R *.res}

uses
   System.SysUtils;
var
   myWord: Word;
   myInteger: Integer;
begin
   myInteger := myWord.MaxValue + 1;
   myWord := myInteger;
   WriteLn(myWord);
   WriteLn(myInteger);
   ReadLn;
end.
Ich stecke einen riesigen Integer in ein nur halb so großes Word. Niemanden kümmert es. Der Compiler (Win32) ist zufrieden. Warum?

Ich weiß dass ich Bereichs- und Überlaufprüfung anschalten und hoffen kann, dass es zur Laufzeit im Debugger auffällt. Aber warum gibt der Compiler mir keine Warnung? Bei impliziten Downcasts von String auf AnsiString tut er es ja auch...
  Mit Zitat antworten Zitat