Hier ein Stück Code, das Overflow detektiert für longints. Ein Problem ist: wenn Delphi-Overflowcheck an ist, darf x+y+c nicht berechnet werden, wenn ovr=true ist.
Weiter solltest Du T.Hi auswerten nach der Schleife, wenn's <>0 ist hast Du mit Sicherheit einen Overflow.
Delphi-Quellcode:
var
x,y,c,z: longint;
ovr: boolean;
begin
x := $3FFFFFFF;
y := $3FFFFFFF;
c := 2;
{ovr=true wenn x+y+c Overflow produziert, Ref. Hacker's Delight 2-12}
z := (not (x xor y)) and $80000000;
ovr := (z and (not ((x xor z) + y + c) xor y)) <> 0;
writeln(x+y+c, ' Overflow: ', ovr);
end.
Was ist eigentlich mit {$Q+}, Du hast nur {$R+}.
Gruß Gammatester