Dela via


COleCurrency-klass

Kapslar in CURRENCY datatypen för OLE-automatisering.

Syntax

class COleCurrency

Medlemmar

Offentliga konstruktorer

Namn Beskrivning
COleCurrency::COleCurrency Konstruerar ett COleCurrency objekt.

Offentliga metoder

Namn Beskrivning
COleCurrency::Format Genererar en formaterad strängrepresentation av ett COleCurrency objekt.
COleCurrency::GetStatus Hämtar statusen (giltigheten) för det här COleCurrency objektet.
COleCurrency::P arseCurrency Läser ett VALUTA-värde från en sträng och anger värdet COleCurrencyför .
COleCurrency::SetCurrency Anger värdet för det här COleCurrency objektet.
COleCurrency::SetStatus Anger status (giltighet) för det här COleCurrency objektet.

Offentliga operatörer

Namn Beskrivning
operator = Kopierar ett COleCurrency värde.
operator +, - Lägger till, subtraherar och ändrar tecken på COleCurrency värden.
operator +=, -= Lägger till och subtraherar ett COleCurrency värde från det här COleCurrency objektet.
operatör*/ Skalar ett COleCurrency värde efter ett heltalsvärde.
operator *=, /= Skalar det här COleCurrency värdet efter ett heltalsvärde.
operatör << Matar ut ett COleCurrency värde till CArchive eller CDumpContext.
operatör >> Matar in ett COleCurrency objekt från CArchive.
operator VALUTA Konverterar ett COleCurrency värde till en VALUTA.
operator ==, <, <=, etc. Jämför två COleCurrency värden.

Medlemmar i offentliga data

Namn Beskrivning
COleCurrency::m_cur Innehåller den underliggande VALUTAN för det här COleCurrency objektet.
COleCurrency::m_status Innehåller status för det här COleCurrency objektet.

Anmärkningar

COleCurrency har ingen basklass.

CURRENCY implementeras som ett heltalsvärde på 8 byte, två heltal som skalas med 10 000. Detta ger ett fast punktnummer med 15 siffror till vänster om decimaltecknet och 4 siffror till höger. Datatypen VALUTA är mycket användbar för beräkningar som involverar pengar, eller för en fast punktberäkning där noggrannhet är viktigt. Det är en av de möjliga typerna VARIANT för datatypen OLE-automatisering.

COleCurrency implementerar också några grundläggande aritmetiska åtgärder för den här typen av fast punkt. De åtgärder som stöds har valts för att kontrollera avrundningsfelen som inträffar under beräkningar med fast punkt.

Arvshierarki

COleCurrency

Kravspecifikation

Rubrik: afxdisp.h

COleCurrency::COleCurrency

Konstruerar ett COleCurrency objekt.

COleCurrency();
COleCurrency(CURRENCY cySrc);
COleCurrency(const COleCurrency& curSrc);
COleCurrency(const VARIANT& varSrc);

COleCurrency(
    long nUnits,
    long nFractionalUnits);

Parameterar

cySrc
Ett VALUTA-värde som ska kopieras till det nya COleCurrency objektet.

curSrc
Ett befintligt COleCurrency objekt som ska kopieras till det nya COleCurrency objektet.

varSrc
En befintlig VARIANT datastruktur (eventuellt ett COleVariant objekt) som ska konverteras till ett valutavärde (VT_CY) och kopieras till det nya COleCurrency objektet.

nUnits, nFractionalUnits Ange enheter och bråkdel (i 1/10 000-s) av värdet som ska kopieras till det nya COleCurrency objektet.

Anmärkningar

Alla dessa konstruktorer skapar nya COleCurrency objekt som initierats till det angivna värdet. En kort beskrivning av var och en av dessa konstruktorer följer. Om inget annat anges är statusen för det nya COleCurrency objektet inställd på giltig.

  • COleCurrency() Konstruerar ett COleCurrency objekt som initierats till 0 (noll).

  • COleCurrency(cySrc) Konstruerar ett COleCurrency objekt från ett VALUTA-värde .

  • COleCurrency(curSrc) Konstruerar ett COleCurrency objekt från ett befintligt COleCurrency objekt. Det nya objektet har samma status som källobjektet.

  • COleCurrency(varSrc) Konstruerar ett COleCurrency objekt. Försöker konvertera en VARIANT-struktur eller COleVariant ett objekt till ett valutavärde (VT_CY). Om konverteringen lyckas kopieras det konverterade värdet till det nya COleCurrency objektet. Om det inte är det anges värdet för COleCurrency objektet till noll (0) och dess status är ogiltig.

  • COleCurrency(nUnits, nFractionalUnits) Konstruerar ett COleCurrency objekt från de angivna numeriska komponenterna. Om det absoluta värdet för bråkdelen är större än 10 000 görs lämplig justering av enheterna. Observera att enheterna och deldelen anges av signerade långa värden.

Mer information finns i poster för VALUTA och VARIANT i Windows SDK.

Exempel

I följande exempel visas effekterna av nollparametern och tvåparameterkonstruktorerna:

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

Anropa den här medlemsfunktionen för att skapa en formaterad representation av valutavärdet.

CString Format(DWORD  dwFlags = 0, LCID  lcid = LANG_USER_DEFAULT) const;

Parameterar

dwFlags
Anger flaggor för nationella inställningar. Endast följande flagga är relevant för valuta:

  • LOCALE_NOUSEROVERRIDE Använd systemets standardinställningar för nationella inställningar i stället för anpassade användarinställningar.

lcid
Anger språkvariant-ID som ska användas för konverteringen.

Returvärde

En CString som innehåller det formaterade valutavärdet.

Anmärkningar

Det formaterar värdet med hjälp av lokala språkspecifikationer (språk-ID:t). En valutasymbol ingår inte i det returnerade värdet. Om statusen för det här COleCurrency objektet är null är returvärdet en tom sträng. Om statusen är ogiltig anges retursträngen av strängresursen IDS_INVALID_CURRENCY.

Exempel

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

Anropa den här medlemsfunktionen för att hämta statusen (giltigheten) för ett visst COleCurrency objekt.

CurrencyStatus GetStatus() const;

Returvärde

Returnerar status för det här COleCurrency värdet.

Anmärkningar

Returvärdet definieras av den CurrencyStatus uppräknade typ som definieras i COleCurrency klassen.

enum CurrencyStatus {
    valid = 0,
    invalid = 1,
    null = 2
    };

En kort beskrivning av dessa statusvärden finns i följande lista:

  • COleCurrency::valid Anger att det här COleCurrency objektet är giltigt.

  • COleCurrency::invalid Anger att det här COleCurrency objektet är ogiltigt, dvs. dess värde kan vara felaktigt.

  • COleCurrency::null Anger att det här COleCurrency objektet är null, d.v.s. att inget värde har angetts för det här objektet. (Det här är "null" i databaskänslan "har inget värde", i motsats till C++ NULL.)

Statusen för ett COleCurrency objekt är ogiltig i följande fall:

  • Om dess värde anges från en VARIANT eller COleVariant ett värde som inte kunde konverteras till ett valutavärde.

  • Om det här objektet har upplevt ett spill eller underflöde under en aritmisk tilldelningsåtgärd, till exempel += eller *=.

  • Om ett ogiltigt värde har tilldelats det här objektet.

  • Om statusen för det här objektet uttryckligen har angetts till ogiltig med SetStatus.

Mer information om åtgärder som kan ange statusen som ogiltig finns i följande medlemsfunktioner:

Exempel

// 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

Den underliggande VALUTA-strukturen för det här COleCurrency objektet.

Anmärkningar

Försiktighet

Om du ändrar värdet i den CURRENCY struktur som används av pekaren som returneras av den här funktionen ändras värdet för det här COleCurrency objektet. Det ändrar inte statusen för det här COleCurrency objektet.

Mer information finns i posten VALUTA i Windows SDK.

COleCurrency::m_status

Typen av den här datamedlemmen är den uppräknade typen CurrencyStatus, som definieras i COleCurrency klassen.

enum CurrencyStatus{
    valid = 0,
    invalid = 1,
    null = 2,
};

Anmärkningar

En kort beskrivning av dessa statusvärden finns i följande lista:

  • COleCurrency::valid Anger att det här COleCurrency objektet är giltigt.

  • COleCurrency::invalid Anger att det här COleCurrency objektet är ogiltigt, dvs. dess värde kan vara felaktigt.

  • COleCurrency::null Anger att det här COleCurrency objektet är null, d.v.s. att inget värde har angetts för det här objektet. (Det här är "null" i databaskänslan "har inget värde", i motsats till C++ NULL.)

Statusen för ett COleCurrency objekt är ogiltig i följande fall:

  • Om dess värde anges från en VARIANT eller COleVariant ett värde som inte kunde konverteras till ett valutavärde.

  • Om det här objektet har upplevt ett spill eller underflöde under en aritmisk tilldelningsåtgärd, till exempel += eller *=.

  • Om ett ogiltigt värde har tilldelats det här objektet.

  • Om statusen för det här objektet uttryckligen har angetts till ogiltig med SetStatus.

Mer information om åtgärder som kan ange statusen som ogiltig finns i följande medlemsfunktioner:

Försiktighet

Den här datamedlemmen är avsedd för avancerade programmeringssituationer. Du bör använda de infogade medlemsfunktionerna GetStatus och SetStatus. Se SetStatus mer information om hur du uttryckligen anger den här datamedlemmen.

COleCurrency::operator =

Dessa överlagrade tilldelningsoperatorer kopierar källvalutavärdet till det här COleCurrency objektet.

const COleCurrency& operator=(CURRENCY cySrc);
const COleCurrency& operator=(const COleCurrency& curSrc);
const COleCurrency& operator=(const VARIANT& varSrc);

Anmärkningar

En kort beskrivning av varje operator följer:

  • operator =(cySrc) Värdet CURRENCY kopieras till COleCurrency objektet och dess status är inställd på giltig.

  • operator =(curSrc) Värdet och statusen för operand, ett befintligt COleCurrency objekt kopieras till det här COleCurrency objektet.

  • operator =(varSrc) Om konverteringen VARIANT av värdet (eller COleVariant-objektet ) till en valuta (VT_CY) lyckas kopieras det konverterade värdet till det här COleCurrency objektet och dess status är inställd på giltig. Om konverteringen inte lyckas anges objektets COleCurrency värde till 0 och dess status är ogiltig.

Mer information finns i poster för VALUTA och VARIANT i Windows SDK.

Exempel

// 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 +, -

Med de här operatorerna kan du lägga till och subtrahera två COleCurrency värden till och från varandra och ändra tecknet för ett COleCurrency värde.

COleCurrency operator+(const COleCurrency& cur) const;
COleCurrency operator-(const COleCurrency& cur) const;
COleCurrency operator-() const;

Anmärkningar

Om någon av operanderna är null är statusen för det resulterande COleCurrency värdet null.

Om den aritmetiska åtgärden flödar över är det resulterande COleCurrency värdet ogiltigt.

Om operand är ogiltig och den andra inte är null är statusen för det resulterande COleCurrency värdet ogiltig.

Mer information om giltiga, ogiltiga och null-statusvärden finns i m_status medlemsvariabel.

Exempel

// 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 +=, -=

Gör att du kan lägga till och subtrahera ett COleCurrency värde till och från det här COleCurrency objektet.

const COleCurrency& operator+=(const COleCurrency& cur);
const COleCurrency& operator-=(const COleCurrency& cur);

Anmärkningar

Om någon av operanderna är null anges statusen för det här COleCurrency objektet till null.

Om den aritmetiska åtgärden flödar över är statusen för det här COleCurrency objektet inställd på ogiltig.

Om någon av operanderna är ogiltig och den andra inte är null är objektets COleCurrency status ogiltig.

Mer information om giltiga, ogiltiga och null-statusvärden finns i m_status medlemsvariabel.

Exempel

// 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 * och /

Gör att du kan skala ett COleCurrency värde efter ett integralvärde.

COleCurrency operator*(long nOperand) const;
COleCurrency operator/(long nOperand) const;

Anmärkningar

Om operand är COleCurrency null är statusen för det resulterande COleCurrency värdet null.

Om den aritmetiska åtgärden flödar över eller underflöden är statusen för det resulterande COleCurrency värdet ogiltig.

Om operand är COleCurrency ogiltig är statusen för det resulterande COleCurrency värdet ogiltig.

Mer information om giltiga, ogiltiga och null-statusvärden finns i m_status medlemsvariabel.

Exempel

// 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 *=, /=

Gör att du kan skala det här COleCurrency värdet med ett integralvärde.

const COleCurrency& operator*=(long nOperand);
const COleCurrency& operator/=(long nOperand);

Anmärkningar

Om operand är COleCurrency null anges statusen för det här COleCurrency objektet till null.

Om den aritmetiska åtgärden flödar över är statusen för det här COleCurrency objektet inställd på ogiltig.

Om operand är COleCurrency ogiltig är statusen för det här COleCurrency objektet inställd på ogiltig.

Mer information om giltiga, ogiltiga och null-statusvärden finns i m_status medlemsvariabel.

Exempel

// 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 >>

Stöder diagnostisk dumpning och lagring i ett arkiv.

friend CDumpContext& operator<<(
    CDumpContext& dc,
    COleCurrency curSrc);

friend CArchive& operator<<(
    CArchive& ar,
    COleCurrency curSrc);

friend CArchive& operator>>(
    CArchive& ar,
    COleCurrency& curSrc);

Anmärkningar

Extraheringsoperatorn ( >>) stöder inläsning från ett arkiv.

COleCurrency::operator VALUTA

Returnerar en CURRENCY struktur vars värde kopieras från det här COleCurrency objektet.

operator CURRENCY() const;

Anmärkningar

COleCurrency::P arseCurrency

Anropa den här medlemsfunktionen för att parsa en sträng för att läsa ett valutavärde.

BOOL ParseCurrency(
    LPCTSTR lpszCurrency,
    DWORD dwFlags = 0,
    LCID lcid = LANG_USER_DEFAULT);

throw(CMemoryException*);
throw(COleException*);

Parameterar

lpszCurrency
En pekare till den null-avslutade strängen som ska parsas.

dwFlags
Anger flaggor för nationella inställningar, eventuellt följande flagga:

  • LOCALE_NOUSEROVERRIDE Använd systemets standardinställningar för nationella inställningar i stället för anpassade användarinställningar.

lcid
Anger språkvariant-ID som ska användas för konverteringen.

Returvärde

Nonzero om strängen har konverterats till ett valutavärde, annars 0.

Anmärkningar

Den använder lokala språkspecifikationer (språk-ID:t) för innebörden av icke-numeriska tecken i källsträngen.

En diskussion om språkvariant-ID-värden finns i Stöd för flera språk.

Om strängen har konverterats till ett valutavärde anges värdet för det här COleCurrency objektet till det värdet och dess status är giltig.

Om strängen inte kunde konverteras till ett valutavärde eller om det fanns ett numeriskt spill är statusen för det här COleCurrency objektet ogiltig.

Om strängkonverteringen misslyckades på grund av minnesallokeringsfel genererar den här funktionen en CMemoryException. I andra feltillstånd genererar den här funktionen en COleException.

Exempel

// works if default locale has dot decimal point
COleCurrency cur;
cur.ParseCurrency(_T("$135.95"), 0);
ASSERT(cur == COleCurrency(135, 9500));

Relationsoperatorer för COleCurrency

Jämför två valutavärden och returnera nonzero om villkoret är sant; annars 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;

Anmärkningar

Anmärkning

Returvärdet för orderåtgärderna ( <, <=, >, , >=) är odefinierat om statusen för antingen operand är null eller ogiltig. Likhetsoperatorerna (==, !=) anser att operandernas status är.

Exempel

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

Anropa den här medlemsfunktionen för att ange enheter och del av det här COleCurrency objektet.

void SetCurrency(
    long nUnits,
    long nFractionalUnits);

Parameterar

nUnits, nFractionalUnits Ange de enheter och bråkdel (i 1/10 000-s) av värdet som ska kopieras till det här COleCurrency objektet.

Anmärkningar

Om det absoluta värdet för bråkdelen är större än 10 000 görs lämplig justering av enheterna, som visas i det tredje av följande exempel.

Observera att enheterna och deldelen anges av signerade långa värden. Det fjärde av följande exempel visar vad som händer när parametrarna har olika tecken.

Exempel

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

Anropa den här medlemsfunktionen för att ange status (giltighet) för det här COleCurrency objektet.

void SetStatus(CurrencyStatus  status  );

Parameterar

status
Den nya statusen för det här COleCurrency objektet.

Anmärkningar

Värdet för statusparametern definieras av den CurrencyStatus uppräknade typen, som definieras i COleCurrency klassen.

enum CurrencyStatus {
    valid = 0,
    invalid = 1,
    null = 2
    };

En kort beskrivning av dessa statusvärden finns i följande lista:

  • COleCurrency::valid Anger att det här COleCurrency objektet är giltigt.

  • COleCurrency::invalid Anger att det här COleCurrency objektet är ogiltigt, dvs. dess värde kan vara felaktigt.

  • COleCurrency::null Anger att det här COleCurrency objektet är null, d.v.s. att inget värde har angetts för det här objektet. (Det här är "null" i databaskänslan "har inget värde", i motsats till C++ NULL.)

Försiktighet

Den här funktionen är avsedd för avancerade programmeringssituationer. Den här funktionen ändrar inte data i det här objektet. Den används oftast för att ange statusen till null eller ogiltig. Observera att tilldelningsoperatorn ( operatorn =) och SetCurrency anger statusen till för objektet baserat på källvärdena.

Se även

hierarkidiagram
COleVariant-klass