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,Exceptset les valeurs de retour diffèrent sur chaque plate-forme. Pour conserver la compatibilité entre plates-formes, pensez à utiliser SetExceptions et TArithmeticExceptions.