Examples Delphi

Question:
My application throws a floating point exception during a Trunc() call. I use data type float.
Answer:
The error is possibly created earlier and surfaces late. In a similar situation I found that clearing any pending floating-point exceptions before the 'critical operation' helps.
There is an assembly function FNCLEX which will do exactly that. You can write yourself a Pascal wrapper around it as shown in the example below. The wrapper uses FNCLEX instead of FCLEX, see the commentary about the difference.

// FCLEX clears any floating-point exceptions which may be pending.
// FNCLEX does the same thing but doesn't wait for previous floating-point
// operations (including the handling of pending exceptions) to finish first.
procedure ClearPendingExceptions;
asm
FNCLEX
end;