Die Hilfe zu SQR() sagt:
Zitat:
Der Rückgabewert (das Quadrat) hat denselben Typ wie X und ist mit der Anweisung X*X identisch.
Das Quadrat passt aber nicht mehr in ein Word und erzeugt so einen internen Überlauf, der in einer negativen Zahl resultiert. Durch die Addition bleibt die Zahl negativ und das SQRT kracht natürlich.
Bei 10.1 gibt es da zwar keine
Exception, aber das Ergebnis stimmt leider auch nicht: 64.536² + 64.536² = 8.329.790.592
Delphi-Quellcode:
var
AWord: Word;
begin
AWord := 64536;
Writeln(SQR(AWord) + SQR(AWord)); // => 33920
end;