Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Encapsule le type de données CURRENCY d'OLE automation.
Syntaxe
class COleCurrency
Membres
Constructeurs publics
| Nom | Descriptif |
|---|---|
| COleCurrency ::COleCurrency | Construit un objet COleCurrency. |
Méthodes publiques
| Nom | Descriptif |
|---|---|
| COleCurrency ::Format | Génère une représentation sous forme de chaîne d’un COleCurrency objet. |
| COleCurrency ::GetStatus | Obtient l’état (validité) de cet COleCurrency objet. |
| COleCurrency ::P arseCurrency | Lit une valeur CURRENCY à partir d’une chaîne et définit la valeur de COleCurrency. |
| COleCurrency ::SetCurrency | Définit la valeur de cet COleCurrency objet. |
| COleCurrency ::SetStatus | Définit l’état (validité) de cet COleCurrency objet. |
Opérateurs publics
| Nom | Descriptif |
|---|---|
| operator = | Copie une COleCurrency valeur. |
| opérateur +, - | Ajoute, soustrait et modifie le signe des COleCurrency valeurs. |
| operator +=, -= | Ajoute et soustrait une COleCurrency valeur de cet COleCurrency objet. |
| opérateur*/ | Met à l’échelle une COleCurrency valeur par une valeur entière. |
| operator *=, /= | Met à l’échelle cette COleCurrency valeur par une valeur entière. |
| opérateur << | Génère une COleCurrency valeur vers CArchive ou CDumpContext. |
| opérateur >> | Entrées d’un COleCurrency objet à partir de CArchive. |
| opérateur CURRENCY | Convertit une COleCurrency valeur en DEVISE. |
| operator ==, <, <=, etc. | Compare deux COleCurrency valeurs. |
Membres de données publics
| Nom | Descriptif |
|---|---|
| COleCurrency ::m_cur | Contient la devise sous-jacente pour cet COleCurrency objet. |
| COleCurrency ::m_status | Contient l’état de cet COleCurrency objet. |
Notes
COleCurrency n’a pas de classe de base.
CURRENCY est implémenté sous la forme d’une valeur entière complète de 8 octets, mise à l’échelle de 10 000 octets. Ceci fournit un nombre à virgule fixe avec 15 chiffres à gauche du séparateur décimal et 4 chiffres à droite. Le type de données CURRENCY est extrêmement utile pour les calculs impliquant de l’argent, ou pour tout calcul à point fixe où la précision est importante. Il s’agit de l’un des types possibles pour le VARIANT type de données d’automatisation OLE.
COleCurrency implémente également certaines opérations arithmétiques de base pour ce type de point fixe. Les opérations prises en charge ont été sélectionnées pour contrôler les erreurs d’arrondi qui se produisent pendant les calculs de point fixe.
Hiérarchie d'héritage
COleCurrency
Spécifications
En-tête : afxdisp.h
COleCurrency ::COleCurrency
Construit un objet COleCurrency.
COleCurrency();
COleCurrency(CURRENCY cySrc);
COleCurrency(const COleCurrency& curSrc);
COleCurrency(const VARIANT& varSrc);
COleCurrency(
long nUnits,
long nFractionalUnits);
Paramètres
cySrc
Valeur CURRENCY à copier dans le nouvel COleCurrency objet.
curSrc
Objet existant COleCurrency à copier dans le nouvel COleCurrency objet.
varSrc
Structure de données existante VARIANT (éventuellement un COleVariant objet) à convertir en valeur monétaire (VT_CY) et copiée dans le nouvel COleCurrency objet.
nUnits, nFractionalUnits Indiquent les unités et la partie fractionnaire (dans 1/10 000's) de la valeur à copier dans le nouvel COleCurrency objet.
Notes
Tous ces constructeurs créent de nouveaux COleCurrency objets initialisés à la valeur spécifiée. Une brève description de chacun de ces constructeurs suit. Sauf indication contraire, l’état du nouvel COleCurrency élément est défini sur valide.
COleCurrency() Construit un
COleCurrencyobjet initialisé à 0 (zéro).COleCurrency(
cySrc) Construit unCOleCurrencyobjet à partir d’une valeur CURRENCY .COleCurrency(
curSrc) construit unCOleCurrencyobjet à partir d’un objet existantCOleCurrency. Le nouvel objet a le même état que l’objet source.COleCurrency(
varSrc) Construit unCOleCurrencyobjet. Tente de convertir une en valeur monétaire (VT_CY). Si cette conversion réussit, la valeur convertie est copiée dans le nouvelCOleCurrencyobjet. Si ce n’est pas le cas, la valeur de l’objetCOleCurrencyest définie sur zéro (0) et son état n’est pas valide.COleCurrency(
nUnits,nFractionalUnits) Construit unCOleCurrencyobjet à partir des composants numériques spécifiés. Si la valeur absolue de la partie fractionnaire est supérieure à 10 000, l’ajustement approprié est effectué sur les unités. Notez que les unités et la partie fractionnaire sont spécifiées par des valeurs longues signées.
Pour plus d’informations, consultez les entrées CURRENCY et VARIANT dans le Kit de développement logiciel (SDK) Windows.
Exemple
Les exemples suivants montrent les effets des constructeurs zero-parameter et two-parameter :
COleCurrency curZero; // value: 0.0000
COleCurrency curA(4, 500); // value: 4.0500
COleCurrency curB(2, 11000); // value: 3.1000
COleCurrency curC(2, -50); // value: 1.9950
COleCurrency ::Format
Appelez cette fonction membre pour créer une représentation mise en forme de la valeur monétaire.
CString Format(DWORD dwFlags = 0, LCID lcid = LANG_USER_DEFAULT) const;
Paramètres
dwFlags
Indique les indicateurs des paramètres régionaux. Seul l’indicateur suivant s’applique à la devise :
- LOCALE_NOUSEROVERRIDE Utiliser les paramètres régionaux par défaut du système, plutôt que les paramètres utilisateur personnalisés.
lcid
Indique l’ID de paramètres régionaux à utiliser pour la conversion.
Valeur de retour
Qui CString contient la valeur monétaire mise en forme.
Notes
Il met en forme la valeur à l’aide des spécifications de langue locale (ID de paramètres régionaux). Un symbole monétaire n’est pas inclus dans la valeur retournée. Si l’état de cet COleCurrency objet est Null, la valeur de retour est une chaîne vide. Si l’état n’est pas valide, la chaîne de retour est spécifiée par la ressource de chaîne IDS_INVALID_CURRENCY.
Exemple
COleCurrency curA; // value: 0.0000
curA.SetCurrency(4, 500); // value: 4.0500
// value returned: 4.05
curA.Format(0, MAKELCID(MAKELANGID(LANG_CHINESE,
SUBLANG_CHINESE_SINGAPORE), SORT_DEFAULT));
// value returned: 4,05
curA.Format(0, MAKELCID(MAKELANGID(LANG_GERMAN,
SUBLANG_GERMAN_AUSTRIAN), SORT_DEFAULT));
COleCurrency ::GetStatus
Appelez cette fonction membre pour obtenir l’état (validité) d’un objet donné COleCurrency .
CurrencyStatus GetStatus() const;
Valeur de retour
Retourne l’état de cette COleCurrency valeur.
Notes
La valeur de retour est définie par le CurrencyStatus type énuméré défini dans la COleCurrency classe.
enum CurrencyStatus {
valid = 0,
invalid = 1,
null = 2
};
Pour obtenir une brève description de ces valeurs d’état, consultez la liste suivante :
COleCurrency::validIndique que cetCOleCurrencyobjet est valide.COleCurrency::invalidIndique que cetCOleCurrencyobjet n’est pas valide ; autrement dit, sa valeur peut être incorrecte.COleCurrency::nullIndique que cetCOleCurrencyobjet est null, autrement dit qu’aucune valeur n’a été fournie pour cet objet. (Il s’agit de « null » dans le sens de la base de données d'« avoir aucune valeur », par opposition à la valeur NULL C++.)
L’état d’un COleCurrency objet n’est pas valide dans les cas suivants :
Si sa valeur est définie à partir d’un VARIANT ou
COleVariantd’une valeur qui n’a pas pu être convertie en valeur monétaire.Si cet objet a connu un dépassement de capacité ou un sous-flux pendant une opération d’affectation arithmétique, par exemple
+=ou *=.Si une valeur non valide a été affectée à cet objet.
Si l’état de cet objet a été défini explicitement sur non valide à l’aide de SetStatus.
Pour plus d’informations sur les opérations qui peuvent définir l’état sur non valide, consultez les fonctions membres suivantes :
Exemple
// even an empty COleCurrency is valid
COleCurrency cy;
ASSERT(cy.GetStatus() == COleCurrency::valid);
// always valid after being set
cy.SetCurrency(4, 500);
ASSERT(cy.GetStatus() == COleCurrency::valid);
// some conversions aren't possible and will
// cause an invalid state, like this:
CByteArray array;
COleVariant varBogus(array);
cy = varBogus;
ASSERT(cy.GetStatus() == COleCurrency::invalid);
COleCurrency ::m_cur
Structure CURRENCY sous-jacente pour cet COleCurrency objet.
Notes
Attention
La modification de la valeur dans la CURRENCY structure accessible par le pointeur retourné par cette fonction modifie la valeur de cet COleCurrency objet. Il ne modifie pas l’état de cet COleCurrency objet.
Pour plus d’informations, consultez l’entrée CURRENCY dans le Kit de développement logiciel (SDK) Windows.
COleCurrency ::m_status
Le type de ce membre de données est le type CurrencyStatusénuméré, qui est défini dans la COleCurrency classe.
enum CurrencyStatus{
valid = 0,
invalid = 1,
null = 2,
};
Notes
Pour obtenir une brève description de ces valeurs d’état, consultez la liste suivante :
COleCurrency::validIndique que cetCOleCurrencyobjet est valide.COleCurrency::invalidIndique que cetCOleCurrencyobjet n’est pas valide ; autrement dit, sa valeur peut être incorrecte.COleCurrency::nullIndique que cetCOleCurrencyobjet est null, autrement dit qu’aucune valeur n’a été fournie pour cet objet. (Il s’agit de « null » dans le sens de la base de données d'« avoir aucune valeur », par opposition à la valeur NULL C++.)
L’état d’un COleCurrency objet n’est pas valide dans les cas suivants :
Si sa valeur est définie à partir d’un VARIANT ou
COleVariantd’une valeur qui n’a pas pu être convertie en valeur monétaire.Si cet objet a connu un dépassement de capacité ou un sous-flux pendant une opération d’affectation arithmétique, par exemple
+=ou *=.Si une valeur non valide a été affectée à cet objet.
Si l’état de cet objet a été défini explicitement sur non valide à l’aide de SetStatus.
Pour plus d’informations sur les opérations qui peuvent définir l’état sur non valide, consultez les fonctions membres suivantes :
Attention
Ce membre de données est destiné aux situations de programmation avancées. Vous devez utiliser les fonctions membres inline GetStatus et SetStatus. Pour plus d’informations sur la définition explicite de ce membre de données, consultez SetStatus les avertissements.
COleCurrency ::operator =
Ces opérateurs d’affectation surchargés copient la valeur monétaire source dans cet COleCurrency objet.
const COleCurrency& operator=(CURRENCY cySrc);
const COleCurrency& operator=(const COleCurrency& curSrc);
const COleCurrency& operator=(const VARIANT& varSrc);
Notes
Une brève description de chaque opérateur suit :
operator =(
cySrc) LaCURRENCYvaleur est copiée dans l’objetCOleCurrencyet son état est défini sur valide.operator =(
curSrc) La valeur et l’état de l’opérande, un objet existantCOleCurrencyest copié dans cetCOleCurrencyobjet.operator =(varSrc) Si la conversion de la
VARIANTvaleur (ou de l’objet COleVariant ) en devise (VT_CY) réussit, la valeur convertie est copiée dans cetCOleCurrencyobjet et son état est défini sur valide. Si la conversion n’est pas réussie, la valeur de l’objetCOleCurrencyest définie sur 0 et son état n’est pas valide.
Pour plus d’informations, consultez les entrées CURRENCY et VARIANT dans le Kit de développement logiciel (SDK) Windows.
Exemple
// set to 35.0050
COleCurrency cur1(35, 50);
COleCurrency cur2;
// operator= copies COleCurrency types
cur2 = cur1;
ASSERT(cur1 == cur2);
// can be used to assign a CURRENCY type, as well
CURRENCY cy;
cy.Hi = 0;
cy.Lo = 350050;
cy.int64 = 350050;
// perform assignment
COleCurrency cur3;
cur3 = cy;
ASSERT(cur3 == cur1);
COleCurrency ::operator +, -
Ces opérateurs vous permettent d’ajouter et de soustraire deux COleCurrency valeurs entre elles et de modifier le signe d’une COleCurrency valeur.
COleCurrency operator+(const COleCurrency& cur) const;
COleCurrency operator-(const COleCurrency& cur) const;
COleCurrency operator-() const;
Notes
Si l’un des opérandes a la valeur Null, l’état de la valeur résultante COleCurrency est Null.
Si l’opération arithmétique dépasse, la valeur résultante COleCurrency n’est pas valide.
Si l’opérande n’est pas valide et que l’autre n’est pas null, l’état de la valeur résultante COleCurrency n’est pas valide.
Pour plus d’informations sur les valeurs d’état valides, non valides et null, consultez la variable membre m_status .
Exemple
// 35.0050
COleCurrency cur1(35, 50);
// 2.0075
COleCurrency cur2(2, 75);
COleCurrency cur3;
// sum is 37.0125
cur3 = cur1 + cur2;
ASSERT(cur3 == COleCurrency(37, 125));
// difference is 32.9975
cur3 = cur1 - cur2;
ASSERT(cur3 == COleCurrency(32, 9975));
COleCurrency ::operator +=, -=
Permet d’ajouter et de soustraire une COleCurrency valeur à et à partir de cet COleCurrency objet.
const COleCurrency& operator+=(const COleCurrency& cur);
const COleCurrency& operator-=(const COleCurrency& cur);
Notes
Si l’un des opérandes a la valeur Null, l’état de cet COleCurrency objet est défini sur Null.
Si l’opération arithmétique dépasse, l’état de cet COleCurrency objet est défini sur non valide.
Si l’un des opérandes n’est pas valide et que l’autre n’est pas null, l’état de cet COleCurrency objet est défini sur non valide.
Pour plus d’informations sur les valeurs d’état valides, non valides et null, consultez la variable membre m_status .
Exemple
// both set to 35.0050
COleCurrency cur1(35, 50);
COleCurrency cur2(35, 50);
// adding 2.0075 results in 37.0125
cur1 += COleCurrency(2, 75);
ASSERT(cur1 == COleCurrency(37, 125));
// subtracting 2.0075 results in 32.9975
cur2 -= COleCurrency(2, 75);
ASSERT(cur2 == COleCurrency(32, 9975));
COleCurrency ::operator * et /
Vous pouvez mettre à l’échelle une COleCurrency valeur par une valeur intégrale.
COleCurrency operator*(long nOperand) const;
COleCurrency operator/(long nOperand) const;
Notes
Si l’opérande a la COleCurrency valeur Null, l’état de la valeur résultante COleCurrency est Null.
Si l’opération arithmétique dépasse ou sous-flux, l’état de la valeur résultante COleCurrency n’est pas valide.
Si l’opérande COleCurrency n’est pas valide, l’état de la valeur résultante COleCurrency n’est pas valide.
Pour plus d’informations sur les valeurs d’état valides, non valides et null, consultez la variable membre m_status .
Exemple
// 35 units and 50/10000, or 35.0050
COleCurrency cur1(35, 50);
COleCurrency cur2;
// divided by two is 17.5025
cur2 = cur1 / 2;
ASSERT(cur2 == COleCurrency(17, 5025));
// multiplied by two is 70.0100
cur2 = cur1 * 2;
ASSERT(cur2 == COleCurrency(70, 100));
COleCurrency ::operator *=, /=
Vous pouvez mettre à l’échelle cette COleCurrency valeur par une valeur intégrale.
const COleCurrency& operator*=(long nOperand);
const COleCurrency& operator/=(long nOperand);
Notes
Si l’opérande a la COleCurrency valeur Null, l’état de cet COleCurrency objet est défini sur Null.
Si l’opération arithmétique dépasse, l’état de cet COleCurrency objet est défini sur non valide.
Si l’opérande COleCurrency n’est pas valide, l’état de cet COleCurrency objet est défini sur non valide.
Pour plus d’informations sur les valeurs d’état valides, non valides et null, consultez la variable membre m_status .
Exemple
// both set to 35.0050
COleCurrency cur1(35, 50);
COleCurrency cur2(35, 50);
// divide in half
cur1 /= 2;
ASSERT(cur1 == COleCurrency(17, 5025));
// multiply by two
cur2 *= 2;
ASSERT(cur2 == COleCurrency(70, 100));
operator <<, operator >>
Prend en charge le dumping de diagnostic et le stockage dans une archive.
friend CDumpContext& operator<<(
CDumpContext& dc,
COleCurrency curSrc);
friend CArchive& operator<<(
CArchive& ar,
COleCurrency curSrc);
friend CArchive& operator>>(
CArchive& ar,
COleCurrency& curSrc);
Notes
L’opérateur d’extraction ( >>) prend en charge le chargement à partir d’une archive.
COleCurrency ::operator CURRENCY
Retourne une CURRENCY structure dont la valeur est copiée à partir de cet COleCurrency objet.
operator CURRENCY() const;
Notes
COleCurrency ::P arseCurrency
Appelez cette fonction membre pour analyser une chaîne pour lire une valeur monétaire.
BOOL ParseCurrency(
LPCTSTR lpszCurrency,
DWORD dwFlags = 0,
LCID lcid = LANG_USER_DEFAULT);
throw(CMemoryException*);
throw(COleException*);
Paramètres
lpszCurrency
Pointeur vers la chaîne terminée par null qui doit être analysée.
dwFlags
Indique les indicateurs des paramètres régionaux, éventuellement l’indicateur suivant :
- LOCALE_NOUSEROVERRIDE Utiliser les paramètres régionaux par défaut du système, plutôt que les paramètres utilisateur personnalisés.
lcid
Indique l’ID de paramètres régionaux à utiliser pour la conversion.
Valeur de retour
Différent de zéro si la chaîne a été convertie avec succès en valeur monétaire, sinon 0.
Notes
Il utilise des spécifications de langage local (ID de paramètres régionaux) pour la signification de caractères non numériques dans la chaîne source.
Pour une discussion sur les valeurs d’ID de paramètres régionaux, consultez Prise en charge de plusieurs langues.
Si la chaîne a été correctement convertie en valeur monétaire, la valeur de cet objet est définie sur cette COleCurrency valeur et son état sur valide.
Si la chaîne n’a pas pu être convertie en valeur monétaire ou s’il y avait un dépassement numérique, l’état de cet COleCurrency objet n’est pas valide.
Si la conversion de chaîne a échoué en raison d’erreurs d’allocation de mémoire, cette fonction lève une exception CMemoryException. Dans tout autre état d’erreur, cette fonction lève une exception COleException.
Exemple
// works if default locale has dot decimal point
COleCurrency cur;
cur.ParseCurrency(_T("$135.95"), 0);
ASSERT(cur == COleCurrency(135, 9500));
Opérateurs relationnels COleCurrency
Comparez deux valeurs monétaires et retournez une valeur différente de zéro si la condition est vraie ; sinon 0.
BOOL operator==(const COleCurrency& cur) const;
BOOL operator!=(const COleCurrency& cur) const;
BOOL operator<(const COleCurrency& cur) const;
BOOL operator>(const COleCurrency& cur) const;
BOOL operator<=(const COleCurrency& cur) const;
BOOL operator>=(const COleCurrency& cur) const;
Notes
Remarque
La valeur de retour des opérations de classement (<, =<, >>=) n’est pas définie si l’état de l’opérande est null ou non valide. Les opérateurs d’égalité (==, !=) considèrent l’état des opérandes.
Exemple
COleCurrency curOne(3, 5000); // 3.5
COleCurrency curTwo(curOne); // 3.5
BOOL b = (curOne == curTwo); // TRUE
b = curOne < curTwo; // FALSE, same value
b = curOne > curTwo; // FALSE, same value
b = curOne <= curTwo; // TRUE, same value
b = curOne >= curTwo; // TRUE, same value
curTwo.SetStatus(COleCurrency::invalid);
b = curOne == curTwo; // FALSE, different status
b = curOne != curTwo; // TRUE, different status
COleCurrency ::SetCurrency
Appelez cette fonction membre pour définir les unités et la partie fractionnaire de cet COleCurrency objet.
void SetCurrency(
long nUnits,
long nFractionalUnits);
Paramètres
nUnits, nFractionalUnits Indiquent les unités et la partie fractionnaire (dans 1/10 000's) de la valeur à copier dans cet COleCurrency objet.
Notes
Si la valeur absolue de la partie fractionnaire est supérieure à 10 000, l’ajustement approprié est effectué sur les unités, comme indiqué dans le troisième des exemples suivants.
Notez que les unités et la partie fractionnaire sont spécifiées par des valeurs longues signées. Le quatrième des exemples suivants montre ce qui se passe lorsque les paramètres ont des signes différents.
Exemple
COleCurrency curA; // value: 0.0000
curA.SetCurrency(4, 500); // value: 4.0500
curA.SetCurrency(2, 11000); // value: 3.1000
curA.SetCurrency(2, -50); // value: 1.9950
COleCurrency ::SetStatus
Appelez cette fonction membre pour définir l’état (validité) de cet COleCurrency objet.
void SetStatus(CurrencyStatus status );
Paramètres
statut
Nouvel état de cet COleCurrency objet.
Notes
La valeur du paramètre d’état est définie par le CurrencyStatus type énuméré, qui est défini dans la COleCurrency classe.
enum CurrencyStatus {
valid = 0,
invalid = 1,
null = 2
};
Pour obtenir une brève description de ces valeurs d’état, consultez la liste suivante :
COleCurrency::validIndique que cetCOleCurrencyobjet est valide.COleCurrency::invalidIndique que cetCOleCurrencyobjet n’est pas valide ; autrement dit, sa valeur peut être incorrecte.COleCurrency::nullIndique que cetCOleCurrencyobjet est null, autrement dit qu’aucune valeur n’a été fournie pour cet objet. (Il s’agit de « null » dans le sens de la base de données d'« avoir aucune valeur », par opposition à la valeur NULL C++.)
Attention
Cette fonction est destinée aux situations de programmation avancées. Cette fonction ne modifie pas les données de cet objet. Il sera le plus souvent utilisé pour définir l’état sur Null ou non valide. Notez que l’opérateur d’affectation ( operator =) et SetCurrency définissent l’état sur l’objet en fonction de la ou des valeurs sources.