Exception de virgule flottante : Faute de pile
Remonter à Exceptions de virgule flottante
La pile a virgule flottante a débordé. Cette erreur peut être due à un code assembleur qui a utilisé trop de registres ou à une mauvaise déclaration d'une fonction à virgule flottante.
Exemple (à titre d'illustration):
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils;
var
I: Integer;
S: Single;
begin
try
// L'instruction FLD charge une valeur réelle dans la pile FPU
for I := 0 to 32 do
begin
asm
FLD S
end;
end;
except
on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end;
end.
Ces erreurs de virgule flottante peuvent être évitées en définissant le mot de contrôle FPU. Voir la procédure SetExceptionMask :
SetExceptionMask([exInvalidOp]);