System.FSetExceptFlag
Delphi
function FSetExceptFlag(NewFlags: UInt32; Excepts: UInt32): UInt32;
C++
extern DELPHI_PACKAGE unsigned __fastcall FSetExceptFlag(unsigned NewFlags, unsigned Excepts = (unsigned)(0x3f));
Propriétés
Type | Visibilité | Source | Unité | Parent |
---|---|---|---|---|
function | public | System.pas System.hpp |
System | System |
Description
Définit les indicateurs d'exception de virgule flottante.
FSetExceptFlag définit des indicateurs d'exception de virgule flottante spécifiés par le paramètre Excepts
sur les valeurs indiquées par le paramètre NewFlags
.
Excepts
et NewFlags
représentent des combinaisons des valeurs suivantes :
Constante |
---|
feeINEXACT |
feeUNDERFLOW |
feeOVERFLOW |
feeDIVBYZERO |
feeINVALID |
FSetExceptFlag renvoie les valeurs précédentes des indicateurs d'exception de virgule flottante de l'unité, spécifiés par Excepts
.
Excepts
spécifie quels indicateurs d'événement d'exception doivent être modifiés et renvoyés. Par exemple, si Excepts
a pour valeur feeDIVBYZERO
et feeINVALID
, seuls ces indicateurs sont modifiés selon les valeurs de NewFlags
; FSetExceptFlag renvoie les anciens statuts des indicateurs feeDIVBYZERO
et feeINVALID
uniquement.
Si Excepts
est égal à 0, FSetExceptFlag ne change aucun indicateur et renvoie 0.
Par défaut, Excepts = feeALLEXCEPT
. feeALLEXCEPT
définit l'ensemble de tous les indicateurs d'exception de virgule flottante possibles.
Exemple
FSetExceptFlag(0); // Clears all pending floating-point number exceptions.
FSetExceptFlag(0, feeOVERFLOW); // Clears the pending floating-point number's overflow exception flag. Other flags are not changed.
FSetExceptFlag(feeALLEXCEPTION, feeOVERFLOW + feeUNDERFLOW); // Sets the overflow and underflow exception flag. Other flags are not changed.
FSetExceptFlag(feeOVERFLOW + feeUNDERFLOW); // Sets the overflow and underflow exception flag and clears other in-exact, div-by-zero and invalid-op flags.
Remarques :
- L'indicateur d'événement d'exception est cumulatif. Certaines plates-formes prennent en charge les exceptions matérielles. Si chaque exception est activée, l'unité à virgule flottante déclenche immédiatement l'exception matérielle. Si l'exception est masquée, les événements d'exception sont conservés dans l'indicateur d'événement.
NewFlags
,Excepts
et les valeurs de retour diffèrent sur chaque plate-forme. Pour conserver la compatibilité entre plates-formes, pensez à utiliser SetExceptions et TArithmeticExceptions.