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 un COleCurrency oggetto da un valore CURRENCY .

  • COleCurrency(curSrc) Costruisce un COleCurrency oggetto da un oggetto esistente COleCurrency . Il nuovo oggetto ha lo stesso stato dell'oggetto di origine.

  • COleCurrency(varSrc) Costruisce un COleCurrency oggetto . Tenta di convertire una struttura o COleVariant un oggetto VARIANT in un valore di valuta (VT_CY). Se la conversione ha esito positivo, il valore convertito viene copiato nel nuovo COleCurrency oggetto . In caso contrario, il valore dell'oggetto COleCurrency viene impostato su zero (0) e il relativo stato non è valido.

  • COleCurrency(nUnits, nFractionalUnits) Costruisce un COleCurrency 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_NOUedizione Standard ROVERRIDE 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 questo COleCurrency oggetto è valido.

  • COleCurrency::invalid Indica che l'oggetto COleCurrency non è valido, ovvero il relativo valore potrebbe non essere corretto.

  • COleCurrency::null Indica che questo COleCurrency 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 CurrencyStatusenumerato , 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 questo COleCurrency oggetto è valido.

  • COleCurrency::invalid Indica che l'oggetto COleCurrency non è valido, ovvero il relativo valore potrebbe non essere corretto.

  • COleCurrency::null Indica che questo COleCurrency 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) Il CURRENCY valore viene copiato nell'oggetto COleCurrency e il relativo stato è impostato su valido.

  • operator =(curSrc) Valore e stato dell'operando, un oggetto esistente COleCurrency viene copiato in questo COleCurrency 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 questo COleCurrency oggetto e il relativo stato è impostato su valido. Se la conversione non riesce, il valore dell'oggetto COleCurrency 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_NOUedizione Standard ROVERRIDE 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 questo COleCurrency oggetto è valido.

  • COleCurrency::invalid Indica che l'oggetto COleCurrency non è valido, ovvero il relativo valore potrebbe non essere corretto.

  • COleCurrency::null Indica che questo COleCurrency 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.

Vedi anche

Grafico della gerarchia
Classe COleVariant