Bei dem expliziten Integer-Cast wird der binäre Wert in der Variable nicht verändert.
Man stellt da nur vor der Zuweisung die Interpretierung des höchsten Bits um, womit dann die Wertebereiche zusammen passen.
Stell dir es so vor:
Delphi erkennt, daß die beiden Typen nicht zusammen passen und macht intern aus deinem
MyInteger := MyCardinal;
ein
Delphi-Quellcode:
TempInt64 := MyCardinal;
if (TempInt64 < Low(MyInteger))
or (TempInt64 > High(MyInteger))
then
raise exception....;
MyInteger := Integer(TempInt64);
MyInteger := Integer(MyCardinal);
tut jetzt so, als seien die 4 Byte in MyCardinal schon ein Integer, womit das gleich da rein passt.