Sdílet prostřednictvím


COleCurrency – třída

Zapouzdřuje CURRENCY datový typ automatizace OLE.

Syntaxe

class COleCurrency

Členové

Veřejné konstruktory

Název Popis
COleCurrency::COleCurrency COleCurrency Vytvoří objekt.

Veřejné metody

Název Popis
COleCurrency::Format Vygeneruje formátovanou řetězcovou reprezentaci objektu COleCurrency .
COleCurrency::GetStatus Získá stav (platnost) tohoto COleCurrency objektu.
COleCurrency::P arseCurrency Načte hodnotu CURRENCY z řetězce a nastaví hodnotu COleCurrency.
COleCurrency::SetCurrency Nastaví hodnotu tohoto COleCurrency objektu.
COleCurrency::SetStatus Nastaví stav (platnost) pro tento COleCurrency objekt.

Veřejné operátory

Název Popis
operator = COleCurrency Zkopíruje hodnotu.
operator +, - Sčítá, odečte a změní znaménko COleCurrency hodnot.
operator +=, -= Sčítá a odečte COleCurrency hodnotu z tohoto COleCurrency objektu.
operátor*/ Škáluje COleCurrency hodnotu podle celočíselné hodnoty.
operator *=, /= Škáluje tuto COleCurrency hodnotu podle celočíselné hodnoty.
operátor << Vypíše COleCurrency hodnotu do CArchive nebo CDumpContext.
operátor >> Vstupy objektu COleCurrency z CArchive.
operátor CURRENCY COleCurrency Převede hodnotu na MĚNU.
operator ==, <, <=, etc. Porovná dvě COleCurrency hodnoty.

Veřejné datové členy

Název Popis
COleCurrency::m_cur Obsahuje podkladovou MĚNU pro tento COleCurrency objekt.
COleCurrency::m_status Obsahuje stav tohoto COleCurrency objektu.

Poznámky

COleCurrency nemá základní třídu.

FUNKCE CURRENCY se implementuje jako 8bajtů, celočíselná hodnota se dvěma doplňky se škáluje o 10 000. Tím získáte číslo s pevným bodem s 15 číslicemi vlevo od desetinné čárky a 4 číslic vpravo. Datový typ CURRENCY je velmi užitečný pro výpočty zahrnující peníze nebo pro výpočet s pevným bodem, kde je přesnost důležitá. Jedná se o jeden z možných typů pro VARIANT datový typ automatizace OLE.

COleCurrency implementuje také některé základní aritmetické operace pro tento typ s pevným bodem. Byly vybrány podporované operace pro řízení chyb zaokrouhlení, ke kterým dochází při výpočtech s pevnými body.

Hierarchie dědičnosti

COleCurrency

Požadavky

Hlavička: afxdisp.h

COleCurrency::COleCurrency

COleCurrency Vytvoří objekt.

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

COleCurrency(
    long nUnits,
    long nFractionalUnits);

Parametry

cySrc
Hodnota CURRENCY, která se má zkopírovat do nového COleCurrency objektu.

curSrc
Existující COleCurrency objekt, který se má zkopírovat do nového COleCurrency objektu.

varSrc
Existující VARIANT datová struktura (pravděpodobně COleVariant objekt), která se má převést na hodnotu měny (VT_CY) a zkopírovat do nového COleCurrency objektu.

nUnits, nFractionalUnits Označuje jednotky a zlomkovou část (v 1/10 000) hodnoty, která se má zkopírovat do nového COleCurrency objektu.

Poznámky

Všechny tyto konstruktory vytvářejí nové COleCurrency objekty inicializované na zadanou hodnotu. Stručný popis každého z těchto konstruktorů následuje. Pokud není uvedeno jinak, stav nové COleCurrency položky je nastaven na platný.

  • COleCurrency() Vytvoří COleCurrency objekt inicializovaný na 0 (nula).

  • COleCurrency(cySrc) Vytvoří COleCurrency objekt z hodnoty CURRENCY .

  • COleCurrency(curSrc) Vytvoří COleCurrency objekt z existujícího COleCurrency objektu. Nový objekt má stejný stav jako zdrojový objekt.

  • COleCurrency(varSrc) Vytvoří COleCurrency objekt. Pokusí se převést strukturu VARIANT nebo COleVariant objekt na hodnotu měny (VT_CY). Pokud je převod úspěšný, převedená hodnota se zkopíruje do nového COleCurrency objektu. Pokud není, hodnota objektu je nastavena na nulu COleCurrency (0) a její stav je neplatný.

  • COleCurrency(nUnits, nFractionalUnits) Vytvoří COleCurrency objekt ze zadaných číselných komponent. Pokud je absolutní hodnota zlomkové části větší než 10 000, provede se příslušná úprava jednotek. Všimněte si, že jednotky a zlomková část jsou určeny dlouhými hodnotami se znaménkem.

Další informace najdete v položkách CURRENCY a VARIANT v sadě Windows SDK.

Příklad

Následující příklady ukazují účinky konstruktorů nulového parametru a dvou parametrů:

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

Voláním této členské funkce vytvoříte formátovanou reprezentaci hodnoty měny.

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

Parametry

dwFlags
Označuje příznaky pro nastavení národního prostředí. Pro měnu je relevantní pouze následující příznak:

  • LOCALE_NOUSEROVERRIDE Místo vlastních uživatelských nastavení použijte výchozí nastavení národního prostředí systému.

lcid
Označuje ID národního prostředí, které se má použít pro převod.

Návratová hodnota

A CString obsahující formátovanou hodnotu měny.

Poznámky

Formátuje hodnotu pomocí specifikací místního jazyka (ID národního prostředí). Symbol měny není zahrnut do vrácené hodnoty. Pokud je stav tohoto COleCurrency objektu null, návratová hodnota je prázdný řetězec. Pokud je stav neplatný, návratový řetězec je určen řetězcovým prostředkem IDS_INVALID_CURRENCY.

Příklad

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

Voláním této členské funkce získáte stav (platnost) daného COleCurrency objektu.

CurrencyStatus GetStatus() const;

Návratová hodnota

Vrátí stav této COleCurrency hodnoty.

Poznámky

Návratová hodnota je definována výčtem CurrencyStatus typu, který je definován v rámci COleCurrency třídy.

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

Stručný popis těchto hodnot stavu najdete v následujícím seznamu:

  • COleCurrency::valid Označuje, že tento COleCurrency objekt je platný.

  • COleCurrency::invalid Označuje, že tento COleCurrency objekt je neplatný. To znamená, že jeho hodnota může být nesprávná.

  • COleCurrency::null Označuje, že tento COleCurrency objekt má hodnotu null, to znamená, že pro tento objekt nebyla zadána žádná hodnota. (Toto je hodnota null v databázovém smyslu "nemá žádnou hodnotu", na rozdíl od hodnoty C++NULL.)

Stav objektu COleCurrency je neplatný v následujících případech:

  • Pokud je jeho hodnota nastavena z varianty nebo COleVariant hodnoty, kterou nelze převést na hodnotu měny.

  • Pokud tento objekt zaznamenal přetečení nebo podtečení během operace aritmetické přiřazení, například += nebo *=.

  • Pokud byla k tomuto objektu přiřazena neplatná hodnota.

  • Pokud byl stav tohoto objektu explicitně nastaven na neplatný pomocí SetStatus.

Další informace o operacích, které mohou stav nastavit jako neplatný, najdete v následujících členských funkcích:

Příklad

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

Základní STRUKTURA CURRENCY pro tento COleCurrency objekt.

Poznámky

Upozornění

Změna hodnoty ve CURRENCY struktuře, ke které přistupuje ukazatel vrácený touto funkcí, změní hodnotu tohoto COleCurrency objektu. Nezmění stav tohoto COleCurrency objektu.

Další informace najdete v položce CURRENCY v sadě Windows SDK.

COleCurrency::m_status

Typ tohoto datového členu je výčtový typ CurrencyStatus, který je definován v rámci COleCurrency třídy.

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

Poznámky

Stručný popis těchto hodnot stavu najdete v následujícím seznamu:

  • COleCurrency::valid Označuje, že tento COleCurrency objekt je platný.

  • COleCurrency::invalid Označuje, že tento COleCurrency objekt je neplatný. To znamená, že jeho hodnota může být nesprávná.

  • COleCurrency::null Označuje, že tento COleCurrency objekt má hodnotu null, to znamená, že pro tento objekt nebyla zadána žádná hodnota. (Toto je hodnota null v databázovém smyslu "nemá žádnou hodnotu", na rozdíl od hodnoty C++NULL.)

Stav objektu COleCurrency je neplatný v následujících případech:

  • Pokud je jeho hodnota nastavena z varianty nebo COleVariant hodnoty, kterou nelze převést na hodnotu měny.

  • Pokud tento objekt zaznamenal přetečení nebo podtečení během operace aritmetické přiřazení, například += nebo *=.

  • Pokud byla k tomuto objektu přiřazena neplatná hodnota.

  • Pokud byl stav tohoto objektu explicitně nastaven na neplatný pomocí SetStatus.

Další informace o operacích, které mohou stav nastavit jako neplatný, najdete v následujících členských funkcích:

Upozornění

Tento datový člen je určený pro pokročilé programovací situace. Měli byste použít vložené členské funkce GetStatus a SetStatus. Další SetStatus upozornění týkající se explicitního nastavení tohoto datového člena

COleCurrency::operator =

Tyto přetížené operátory přiřazení zkopírují zdrojovou hodnotu měny do tohoto COleCurrency objektu.

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

Poznámky

Stručný popis každého operátoru:

  • operator =( cySrc ) Hodnota CURRENCY se zkopíruje do objektu COleCurrency a její stav je nastaven na platný.

  • operator =( curSrc ) Hodnota a stav operandu, existující COleCurrency objekt se zkopíruje do tohoto COleCurrency objektu.

  • operator =( varSrc ) Pokud je převod VARIANT hodnoty (nebo COleVariant objektu) na měnu ( VT_CY) úspěšný, převedená hodnota je zkopírována do tohoto COleCurrency objektu a jeho stav je nastaven na platný. Pokud převod není úspěšný, hodnota objektu COleCurrency je nastavena na hodnotu 0 a její stav je neplatný.

Další informace najdete v položkách CURRENCY a VARIANT v sadě Windows SDK.

Příklad

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

Tyto operátory umožňují sčítat a od sebe odečítat dvě COleCurrency hodnoty a měnit znaménko COleCurrency hodnoty.

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

Poznámky

Pokud některý z operandů má hodnotu null, je stav výsledné COleCurrency hodnoty null.

Pokud aritmetická operace přeteče, výsledná COleCurrency hodnota je neplatná.

Pokud je operand neplatný a druhý není null, je stav výsledné COleCurrency hodnoty neplatný.

Další informace o platných, neplatných a null stavových hodnotách najdete v m_status členské proměnné.

Příklad

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

Umožňuje sčítat a odečítat COleCurrency hodnotu do a od tohoto COleCurrency objektu.

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

Poznámky

Pokud je některý z operandů null, stav tohoto COleCurrency objektu je nastaven na hodnotu null.

Pokud aritmetická operace přeteče, stav tohoto COleCurrency objektu je nastaven na neplatný.

Pokud některý z operandů je neplatný a druhý není null, stav tohoto COleCurrency objektu je nastaven na neplatný.

Další informace o platných, neplatných a null stavových hodnotách najdete v m_status členské proměnné.

Příklad

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

Umožňuje škálovat COleCurrency hodnotu integrální hodnotou.

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

Poznámky

COleCurrency Pokud je operand null, je stav výsledné COleCurrency hodnoty null.

Pokud aritmetická operace přeteče nebo podtečení, je stav výsledné COleCurrency hodnoty neplatný.

COleCurrency Pokud je operand neplatný, je stav výsledné COleCurrency hodnoty neplatný.

Další informace o platných, neplatných a null stavových hodnotách najdete v m_status členské proměnné.

Příklad

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

Umožňuje škálovat tuto COleCurrency hodnotu integrální hodnotou.

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

Poznámky

COleCurrency Pokud je operand null, stav tohoto COleCurrency objektu je nastaven na hodnotu null.

Pokud aritmetická operace přeteče, stav tohoto COleCurrency objektu je nastaven na neplatný.

COleCurrency Pokud je operand neplatný, stav tohoto COleCurrency objektu je nastaven na neplatný.

Další informace o platných, neplatných a null stavových hodnotách najdete v m_status členské proměnné.

Příklad

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

Podporuje ukládání diagnostiky do archivu.

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

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

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

Poznámky

Operátor extrakce ( >>) podporuje načítání z archivu.

COleCurrency::operator CURRENCY

CURRENCY Vrátí strukturu, jejíž hodnota je zkopírována z tohoto COleCurrency objektu.

operator CURRENCY() const;

Poznámky

COleCurrency::P arseCurrency

Voláním této členské funkce parsuje řetězec pro čtení hodnoty měny.

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

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

Parametry

lpszCurrency
Ukazatel na řetězec ukončený hodnotou null, který se má analyzovat.

dwFlags
Označuje příznaky pro nastavení národního prostředí, pravděpodobně následující příznak:

  • LOCALE_NOUSEROVERRIDE Místo vlastních uživatelských nastavení použijte výchozí nastavení národního prostředí systému.

lcid
Označuje ID národního prostředí, které se má použít pro převod.

Návratová hodnota

Nenulové, pokud byl řetězec úspěšně převeden na hodnotu měny, jinak 0.

Poznámky

Pro význam nečíselných znaků ve zdrojovém řetězci používá specifikace místního jazyka (ID národního prostředí).

Diskuzi o hodnotách ID národního prostředí najdete v tématu Podpora více jazyků.

Pokud byl řetězec úspěšně převeden na hodnotu měny, hodnota tohoto COleCurrency objektu je nastavena na tuto hodnotu a její stav je platný.

Pokud řetězec nelze převést na hodnotu měny nebo pokud došlo k číselnému přetečení, stav tohoto COleCurrency objektu je neplatný.

Pokud převod řetězce selhal kvůli chybám přidělení paměti, vyvolá tato funkce výjimku CMemoryException. V jakémkoli jiném chybovém stavu vyvolá tato funkce výjimku COleException.

Příklad

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

Relační operátory COleCurrency

Porovnání dvou hodnot měny a vrácení nenulové, pokud je podmínka pravdivá; jinak 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;

Poznámky

Poznámka:

Návratová hodnota operací řazení ( <, <=, >= >, =) není definována, pokud je stav operandu null nebo neplatný. Operátory rovnosti ( ==, !=) zvažují stav operandů.

Příklad

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

Voláním této členské funkce nastavíte jednotky a zlomkovou část tohoto COleCurrency objektu.

void SetCurrency(
    long nUnits,
    long nFractionalUnits);

Parametry

nUnits, nFractionalUnits Označuje jednotky a zlomkovou část (v 1/10 000) hodnoty, která se má zkopírovat do tohoto COleCurrency objektu.

Poznámky

Pokud je absolutní hodnota zlomkové části větší než 10 000, provede se příslušná úprava jednotek, jak je znázorněno ve třetím z následujících příkladů.

Všimněte si, že jednotky a zlomková část jsou určeny dlouhými hodnotami se znaménkem. Čtvrtý z následujících příkladů ukazuje, co se stane, když mají parametry jiné znaménka.

Příklad

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

Voláním této členské funkce nastavíte stav (platnost) tohoto COleCurrency objektu.

void SetStatus(CurrencyStatus  status  );

Parametry

status
Nový stav tohoto COleCurrency objektu.

Poznámky

Hodnota stavového parametru je definována výčtem CurrencyStatus typu, který je definován v rámci COleCurrency třídy.

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

Stručný popis těchto hodnot stavu najdete v následujícím seznamu:

  • COleCurrency::valid Označuje, že tento COleCurrency objekt je platný.

  • COleCurrency::invalid Označuje, že tento COleCurrency objekt je neplatný. To znamená, že jeho hodnota může být nesprávná.

  • COleCurrency::null Označuje, že tento COleCurrency objekt má hodnotu null, to znamená, že pro tento objekt nebyla zadána žádná hodnota. (Toto je hodnota null v databázovém smyslu "nemá žádnou hodnotu", na rozdíl od hodnoty C++NULL.)

Upozornění

Tato funkce je určená pro pokročilé programovací situace. Tato funkce nemění data v tomto objektu. Nejčastěji se použije k nastavení stavu null nebo neplatného stavu. Všimněte si, že operátor přiřazení ( operator =) a SetCurrency nastaví stav objektu na základě zdrojových hodnot.

Viz také

Graf hierarchie
COleVariant – třída