Classe COleCurrency
Incapsula il tipo di dati CURRENCY
dell'automazione OLE.
Sintassi
class COleCurrency
Membri
Costruttori pubblici
Nome | Descrizione |
---|---|
COleCurrency::COleCurrency | Costruisce un oggetto COleCurrency . |
Metodi pubblici
Nome | Descrizione |
---|---|
COleCurrency::Format | Genera una rappresentazione di stringa formattata di un COleCurrency oggetto . |
COleCurrency::GetStatus | Ottiene lo stato (validità) dell'oggetto COleCurrency . |
COleCurrency::P arseCurrency | Legge un valore CURRENCY da una stringa e imposta il valore di COleCurrency . |
COleCurrency::SetCurrency | Imposta il valore di questo COleCurrency oggetto. |
COleCurrency::SetStatus | Imposta lo stato (validità) per questo COleCurrency oggetto. |
Operatori pubblici
Nome | Descrizione |
---|---|
operator = | Copia un COleCurrency valore. |
operator +, - | Aggiunge, sottrae e cambia il segno di COleCurrency valori. |
operator +=, -= | Aggiunge e sottrae un COleCurrency valore da questo COleCurrency oggetto. |
operatore*/ | Ridimensiona un COleCurrency valore in base a un valore intero. |
operator *=, /= | Ridimensiona questo COleCurrency valore in base a un valore intero. |
operatore << | Restituisce un COleCurrency valore in CArchive o CDumpContext . |
operatore >> | Inserisce un COleCurrency oggetto da CArchive . |
operatore CURRENCY | Converte un COleCurrency valore in valuta. |
operator ==, <, <=, etc. | Confronta due COleCurrency valori. |
Membri dati pubblici
Nome | Descrizione |
---|---|
COleCurrency::m_cur | Contiene l'oggetto CURRENCY sottostante per questo COleCurrency oggetto. |
COleCurrency::m_status | Contiene lo stato di questo COleCurrency oggetto. |
Osservazioni:
COleCurrency
non dispone di una classe di base.
CURRENCY viene implementato come intero a 8 byte, il valore intero a complemento di due scalato di 10.000. In questo modo si ottiene un numero a virgola fissa con 15 cifre a sinistra del separatore decimale e 4 cifre a destra. Il tipo di dati CURRENCY è estremamente utile per i calcoli che coinvolgono denaro o per qualsiasi calcolo a virgola fissa in cui l'accuratezza è importante. È uno dei tipi possibili per il VARIANT
tipo di dati di automazione OLE.
COleCurrency
implementa anche alcune operazioni aritmetiche di base per questo tipo a virgola fissa. Le operazioni supportate sono state selezionate per controllare gli errori di arrotondamento che si verificano durante i calcoli a virgola fissa.
Gerarchia di ereditarietà
COleCurrency
Requisiti
Intestazione: afxdisp.h
COleCurrency::COleCurrency
Costruisce un oggetto COleCurrency
.
COleCurrency();
COleCurrency(CURRENCY cySrc);
COleCurrency(const COleCurrency& curSrc);
COleCurrency(const VARIANT& varSrc);
COleCurrency(
long nUnits,
long nFractionalUnits);
Parametri
cySrc
Valore CURRENCY da copiare nel nuovo COleCurrency
oggetto .
curSrc
Oggetto esistente COleCurrency
da copiare nel nuovo COleCurrency
oggetto.
varSrc
Struttura di dati esistente VARIANT
(possibilmente un COleVariant
oggetto) da convertire in un valore di valuta (VT_CY) e copiata nel nuovo COleCurrency
oggetto.
nUnits, nFractionalUnits Indica le unità e la parte frazionaria (in 1/10.000) del valore da copiare nel nuovo COleCurrency
oggetto.
Osservazioni:
Tutti questi costruttori creano nuovi COleCurrency
oggetti inizializzati sul valore specificato. Di seguito è riportata una breve descrizione di ognuno di questi costruttori. Se non diversamente specificato, lo stato del nuovo COleCurrency
elemento è impostato su valido.
COleCurrency() Costruisce un
COleCurrency
oggetto inizializzato su 0 (zero).COleCurrency(
cySrc
) Costruisce unCOleCurrency
oggetto da un valore CURRENCY .COleCurrency(
curSrc
) Costruisce unCOleCurrency
oggetto da un oggetto esistenteCOleCurrency
. Il nuovo oggetto ha lo stesso stato dell'oggetto di origine.COleCurrency(
varSrc
) Costruisce unCOleCurrency
oggetto . Tenta di convertire una struttura oCOleVariant
un oggetto VARIANT in un valore di valuta (VT_CY). Se la conversione ha esito positivo, il valore convertito viene copiato nel nuovoCOleCurrency
oggetto . In caso contrario, il valore dell'oggettoCOleCurrency
viene impostato su zero (0) e il relativo stato non è valido.COleCurrency(
nUnits
,nFractionalUnits
) Costruisce unCOleCurrency
oggetto dai componenti numerici specificati. Se il valore assoluto della parte frazionaria è maggiore di 10.000, viene apportata la rettifica appropriata alle unità. Si noti che le unità e la parte frazionaria vengono specificate da valori lunghi firmati.
Per altre informazioni, vedere le voci CURRENCY e VARIANT in Windows SDK.
Esempio
Negli esempi seguenti vengono illustrati gli effetti dei costruttori zero-parameter e 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
Chiamare questa funzione membro per creare una rappresentazione formattata del valore di valuta.
CString Format(DWORD dwFlags = 0, LCID lcid = LANG_USER_DEFAULT) const;
Parametri
dwFlags
Indica i flag per le impostazioni locali. Solo il flag seguente è rilevante per la valuta:
- LOCALE_NOUSEROVERRIDE Usare le impostazioni locali predefinite del sistema, anziché le impostazioni utente personalizzate.
lcid
Indica l'ID delle impostazioni locali da utilizzare per la conversione.
Valore restituito
Oggetto CString
contenente il valore di valuta formattato.
Osservazioni:
Formatta il valore usando le specifiche della lingua locale (ID impostazioni locali). Un simbolo di valuta non è incluso nel valore restituito. Se lo stato di questo COleCurrency
oggetto è Null, il valore restituito è una stringa vuota. Se lo stato non è valido, la stringa restituita viene specificata dalla risorsa stringa IDS_INVALID_CURRENCY.
Esempio
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
Chiamare questa funzione membro per ottenere lo stato (validità) di un determinato COleCurrency
oggetto.
CurrencyStatus GetStatus() const;
Valore restituito
Restituisce lo stato di questo COleCurrency
valore.
Osservazioni:
Il valore restituito è definito dal CurrencyStatus
tipo enumerato definito all'interno della COleCurrency
classe .
enum CurrencyStatus {
valid = 0,
invalid = 1,
null = 2
};
Per una breve descrizione di questi valori di stato, vedere l'elenco seguente:
COleCurrency::valid
Indica che questoCOleCurrency
oggetto è valido.COleCurrency::invalid
Indica che l'oggettoCOleCurrency
non è valido, ovvero il relativo valore potrebbe non essere corretto.COleCurrency::null
Indica che questoCOleCurrency
oggetto è Null, ovvero che non è stato fornito alcun valore per questo oggetto. Si tratta di "null" nel senso del database di "non avere alcun valore", invece di C++ NULL.
Lo stato di un COleCurrency
oggetto non è valido nei casi seguenti:
Se il valore è impostato da un valore VARIANT o
COleVariant
che non è stato possibile convertire in un valore di valuta.Se questo oggetto ha riscontrato un overflow o un underflow durante un'operazione di assegnazione aritmetica, ad esempio
+=
o *=.Se a questo oggetto è stato assegnato un valore non valido.
Se lo stato di questo oggetto è stato impostato in modo esplicito su non valido tramite SetStatus.
Per altre informazioni sulle operazioni che possono impostare lo stato su non valido, vedere le funzioni membro seguenti:
Esempio
// 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
Struttura CURRENCY sottostante per questo COleCurrency
oggetto.
Osservazioni:
Attenzione
La modifica del valore nella CURRENCY
struttura a cui accede il puntatore restituito da questa funzione modificherà il valore di questo COleCurrency
oggetto. Non modifica lo stato di questo COleCurrency
oggetto.
Per altre informazioni, vedere la voce CURRENCY in Windows SDK.
COleCurrency::m_status
Il tipo di questo membro dati è il tipo CurrencyStatus
enumerato , definito all'interno della COleCurrency
classe .
enum CurrencyStatus{
valid = 0,
invalid = 1,
null = 2,
};
Osservazioni:
Per una breve descrizione di questi valori di stato, vedere l'elenco seguente:
COleCurrency::valid
Indica che questoCOleCurrency
oggetto è valido.COleCurrency::invalid
Indica che l'oggettoCOleCurrency
non è valido, ovvero il relativo valore potrebbe non essere corretto.COleCurrency::null
Indica che questoCOleCurrency
oggetto è Null, ovvero che non è stato fornito alcun valore per questo oggetto. Si tratta di "null" nel senso del database di "non avere alcun valore", invece di C++ NULL.
Lo stato di un COleCurrency
oggetto non è valido nei casi seguenti:
Se il valore è impostato da un valore VARIANT o
COleVariant
che non è stato possibile convertire in un valore di valuta.Se questo oggetto ha riscontrato un overflow o un underflow durante un'operazione di assegnazione aritmetica, ad esempio
+=
o *=.Se a questo oggetto è stato assegnato un valore non valido.
Se lo stato di questo oggetto è stato impostato in modo esplicito su non valido tramite SetStatus.
Per altre informazioni sulle operazioni che possono impostare lo stato su non valido, vedere le funzioni membro seguenti:
Attenzione
Questo membro dati è destinato a situazioni di programmazione avanzate. È consigliabile usare le funzioni membro inline GetStatus e SetStatus. Vedere SetStatus
per ulteriori precauzioni relative all'impostazione esplicita di questo membro dati.
COleCurrency::operator =
Questi operatori di assegnazione di overload copiano il valore della valuta di origine in questo COleCurrency
oggetto.
const COleCurrency& operator=(CURRENCY cySrc);
const COleCurrency& operator=(const COleCurrency& curSrc);
const COleCurrency& operator=(const VARIANT& varSrc);
Osservazioni:
Di seguito è riportata una breve descrizione di ogni operatore:
operator =(
cySrc
) IlCURRENCY
valore viene copiato nell'oggettoCOleCurrency
e il relativo stato è impostato su valido.operator =(
curSrc
) Il valore e lo stato dell'operando, un oggetto esistenteCOleCurrency
viene copiato in questoCOleCurrency
oggetto.operator =( varSrc ) Se la conversione del valore (o dell'oggetto
VARIANT
COleVariant) in una valuta (VT_CY
) ha esito positivo, il valore convertito viene copiato in questoCOleCurrency
oggetto e il relativo stato è impostato su valido. Se la conversione non riesce, il valore dell'oggettoCOleCurrency
viene impostato su 0 e il relativo stato non è valido.
Per altre informazioni, vedere le voci CURRENCY e VARIANT in Windows SDK.
Esempio
// 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 +, -
Questi operatori consentono di aggiungere e sottrarre due COleCurrency
valori tra loro e per modificare il segno di un COleCurrency
valore.
COleCurrency operator+(const COleCurrency& cur) const;
COleCurrency operator-(const COleCurrency& cur) const;
COleCurrency operator-() const;
Osservazioni:
Se uno degli operandi è Null, lo stato del valore risultante COleCurrency
è Null.
Se l'operazione aritmetica supera i flussi, il valore risultante COleCurrency
non è valido.
Se l'operando non è valido e l'altro non è Null, lo stato del valore risultante COleCurrency
non è valido.
Per altre informazioni sui valori di stato validi, non validi e Null, vedere la variabile membro m_status .
Esempio
// 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 +=, -=
Consente di aggiungere e sottrarre un COleCurrency
valore a e da questo COleCurrency
oggetto.
const COleCurrency& operator+=(const COleCurrency& cur);
const COleCurrency& operator-=(const COleCurrency& cur);
Osservazioni:
Se uno degli operandi è Null, lo stato di questo COleCurrency
oggetto è impostato su Null.
Se l'operazione aritmetica supera i flussi, lo stato di questo COleCurrency
oggetto è impostato su non valido.
Se uno degli operandi non è valido e l'altro non è Null, lo stato dell'oggetto COleCurrency
è impostato su non valido.
Per altre informazioni sui valori di stato validi, non validi e Null, vedere la variabile membro m_status .
Esempio
// 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 * e /
Consente di ridimensionare un COleCurrency
valore in base a un valore integrale.
COleCurrency operator*(long nOperand) const;
COleCurrency operator/(long nOperand) const;
Osservazioni:
Se l'operando COleCurrency
è Null, lo stato del valore risultante COleCurrency
è Null.
Se l'operazione aritmetica supera o sottoflow, lo stato del valore risultante COleCurrency
non è valido.
Se l'operando COleCurrency
non è valido, lo stato del valore risultante COleCurrency
non è valido.
Per altre informazioni sui valori di stato validi, non validi e Null, vedere la variabile membro m_status .
Esempio
// 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 *=, /=
Consente di ridimensionare questo COleCurrency
valore in base a un valore integrale.
const COleCurrency& operator*=(long nOperand);
const COleCurrency& operator/=(long nOperand);
Osservazioni:
Se l'operando COleCurrency
è Null, lo stato di questo COleCurrency
oggetto viene impostato su Null.
Se l'operazione aritmetica supera i flussi, lo stato di questo COleCurrency
oggetto è impostato su non valido.
Se l'operando COleCurrency
non è valido, lo stato di questo COleCurrency
oggetto è impostato su non valido.
Per altre informazioni sui valori di stato validi, non validi e Null, vedere la variabile membro m_status .
Esempio
// 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 >>
Supporta il dump diagnostico e l'archiviazione in un archivio.
friend CDumpContext& operator<<(
CDumpContext& dc,
COleCurrency curSrc);
friend CArchive& operator<<(
CArchive& ar,
COleCurrency curSrc);
friend CArchive& operator>>(
CArchive& ar,
COleCurrency& curSrc);
Osservazioni:
L'operatore di estrazione ( >>) supporta il caricamento da un archivio.
COleCurrency::operator CURRENCY
Restituisce una CURRENCY
struttura il cui valore viene copiato da questo COleCurrency
oggetto.
operator CURRENCY() const;
Osservazioni:
COleCurrency::P arseCurrency
Chiamare questa funzione membro per analizzare una stringa per leggere un valore di valuta.
BOOL ParseCurrency(
LPCTSTR lpszCurrency,
DWORD dwFlags = 0,
LCID lcid = LANG_USER_DEFAULT);
throw(CMemoryException*);
throw(COleException*);
Parametri
lpszCurrency
Puntatore alla stringa con terminazione Null che deve essere analizzata.
dwFlags
Indica i flag per le impostazioni locali, possibilmente il flag seguente:
- LOCALE_NOUSEROVERRIDE Usare le impostazioni locali predefinite del sistema, anziché le impostazioni utente personalizzate.
lcid
Indica l'ID delle impostazioni locali da utilizzare per la conversione.
Valore restituito
Diverso da zero se la stringa è stata convertita correttamente in un valore di valuta, in caso contrario 0.
Osservazioni:
Usa le specifiche della lingua locale (ID delle impostazioni locali) per il significato di caratteri non numerici nella stringa di origine.
Per una descrizione dei valori id delle impostazioni locali, vedere Supporto di più lingue.
Se la stringa è stata convertita correttamente in un valore di valuta, il valore di questo COleCurrency
oggetto viene impostato su tale valore e il relativo stato su valido.
Se non è stato possibile convertire la stringa in un valore di valuta o se si è verificato un overflow numerico, lo stato di questo COleCurrency
oggetto non è valido.
Se la conversione della stringa non è riuscita a causa di errori di allocazione della memoria, questa funzione genera un'eccezione CMemoryException. In qualsiasi altro stato di errore, questa funzione genera un'eccezione COleException.
Esempio
// works if default locale has dot decimal point
COleCurrency cur;
cur.ParseCurrency(_T("$135.95"), 0);
ASSERT(cur == COleCurrency(135, 9500));
Operatori relazionali COleCurrency
Confrontare due valori di valuta e restituire un valore diverso da zero se la condizione è true; in caso contrario, 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;
Osservazioni:
Nota
Il valore restituito delle operazioni di ordinamento ( , <<=, >, >=) non è definito se lo stato di uno degli operandi è null o non valido. Gli operatori di uguaglianza ( ==
, !=
) considerano lo stato degli operandi.
Esempio
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
Chiamare questa funzione membro per impostare le unità e la parte frazionaria di questo COleCurrency
oggetto.
void SetCurrency(
long nUnits,
long nFractionalUnits);
Parametri
nUnits, nFractionalUnits Indica le unità e la parte frazionaria (in 1/10.000) del valore da copiare in questo COleCurrency
oggetto.
Osservazioni:
Se il valore assoluto della parte frazionaria è maggiore di 10.000, la regolazione appropriata viene apportata alle unità, come illustrato nel terzo degli esempi seguenti.
Si noti che le unità e la parte frazionaria vengono specificate da valori lunghi firmati. Il quarto degli esempi seguenti mostra cosa accade quando i parametri hanno segni diversi.
Esempio
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
Chiamare questa funzione membro per impostare lo stato (validità) di questo COleCurrency
oggetto.
void SetStatus(CurrencyStatus status );
Parametri
status
Nuovo stato per questo COleCurrency
oggetto.
Osservazioni:
Il valore del CurrencyStatus
parametro di stato è definito dal tipo enumerato, definito all'interno della COleCurrency
classe .
enum CurrencyStatus {
valid = 0,
invalid = 1,
null = 2
};
Per una breve descrizione di questi valori di stato, vedere l'elenco seguente:
COleCurrency::valid
Indica che questoCOleCurrency
oggetto è valido.COleCurrency::invalid
Indica che l'oggettoCOleCurrency
non è valido, ovvero il relativo valore potrebbe non essere corretto.COleCurrency::null
Indica che questoCOleCurrency
oggetto è Null, ovvero che non è stato fornito alcun valore per questo oggetto. Si tratta di "null" nel senso del database di "non avere alcun valore", invece di C++ NULL.
Attenzione
Questa funzione è per situazioni di programmazione avanzate. Questa funzione non modifica i dati in questo oggetto. Viene spesso usato per impostare lo stato su Null o non valido. Si noti che l'operatore di assegnazione ( operator =) e SetCurrency impostano lo stato sull'oggetto in base ai valori di origine.