Fließkommafehler: Stack-Fehler
Nach oben zu Gleitkomma-Exceptions
Auf dem Fließkomma-Stack ist ein Überlauf aufgetreten. Dieser Fehler kann durch Assembler-Anweisungen verursacht werden, die zu viele Register verwenden. Eine andere mögliche Ursache ist die fehlerhafte Deklaration einer Fließkommafunktion.
Beispiel (zur Illustration):
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils;
var
I: Integer;
S: Single;
begin
try
// FLD-Anweisung ladet einen reelen Wert in den FPU-Stack
for I := 0 to 32 do
begin
asm
FLD S
end;
end;
except
on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end;
end.
Diese Fließkommafehler können durch Setzen des FPU-Steuerwortes vermieden werden. Siehe die Prozedur SetExceptionMask:
SetExceptionMask([exInvalidOp]);