System.FSetExceptFlag

De RAD Studio API Documentation
Aller à : navigation, rechercher

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.

Voir aussi