COleCurrency, classe
Encapsule le type de données CURRENCY
d'OLE automation.
Syntaxe
class COleCurrency
Membres
Constructeurs publics
Nom | Description |
---|---|
COleCurrency ::COleCurrency | Construit un objet COleCurrency . |
Méthodes publiques
Nom | Description |
---|---|
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 | Description |
---|---|
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 | Description |
---|---|
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
COleCurrency
objet initialisé à 0 (zéro).COleCurrency(
cySrc
) Construit unCOleCurrency
objet à partir d’une valeur CURRENCY .COleCurrency(
curSrc
) construit unCOleCurrency
objet à partir d’un objet existantCOleCurrency
. Le nouvel objet a le même état que l’objet source.COleCurrency(
varSrc
) Construit unCOleCurrency
objet. Tente de convertir une structure ouCOleVariant
un objet VARIANT en valeur monétaire (VT_CY). Si cette conversion réussit, la valeur convertie est copiée dans le nouvelCOleCurrency
objet. Si ce n’est pas le cas, la valeur de l’objetCOleCurrency
est définie sur zéro (0) et son état n’est pas valide.COleCurrency(
nUnits
,nFractionalUnits
) Construit unCOleCurrency
objet à 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::valid
Indique que cetCOleCurrency
objet est valide.COleCurrency::invalid
Indique que cetCOleCurrency
objet n’est pas valide ; autrement dit, sa valeur peut être incorrecte.COleCurrency::null
Indique que cetCOleCurrency
objet 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
COleVariant
d’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::valid
Indique que cetCOleCurrency
objet est valide.COleCurrency::invalid
Indique que cetCOleCurrency
objet n’est pas valide ; autrement dit, sa valeur peut être incorrecte.COleCurrency::null
Indique que cetCOleCurrency
objet 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
COleVariant
d’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
) LaCURRENCY
valeur est copiée dans l’objetCOleCurrency
et son état est défini sur valide.operator =(
curSrc
) La valeur et l’état de l’opérande, un objet existantCOleCurrency
est copié dans cetCOleCurrency
objet.operator =( varSrc ) Si la conversion de la valeur (ou de l’objet
VARIANT
COleVariant) en devise (VT_CY
) réussit, la valeur convertie est copiée dans cetCOleCurrency
objet et son état est défini sur valide. Si la conversion n’est pas réussie, la valeur de l’objetCOleCurrency
est 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::valid
Indique que cetCOleCurrency
objet est valide.COleCurrency::invalid
Indique que cetCOleCurrency
objet n’est pas valide ; autrement dit, sa valeur peut être incorrecte.COleCurrency::null
Indique que cetCOleCurrency
objet 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.