See the 2 attached images and test code below. Between the two images is a "Step Over" (F8 in the IDE). Prod64 : QWord (64-bit unsigned) has value 3618239625 = $00000000d7a9f489. I want to put the 32 LS bits into TempDivIntoIt : Longint (32-bit signed). Executing the test code below produces the desired output "3618239625 -676727671", but the single-step in the IDE produces Run Time Error 4216927, Error Address $00000000, loss of Watch Window values, and what appears to be a messed up call stack.
How do I to interpret these results?
What should my path forward be? (Bug report? Workarounds? Debugging suggestions? ...)
program bugtest;
var
TempDivIntoIt :Longint;
Prod64 :QWord;
begin
Prod64 := 3618239625;
TempDivIntoIt := Longword(Prod64);
writeln(Prod64, ' ', TempDivIntoIt);
end.