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íhoCOleCurrency
objektu. Nový objekt má stejný stav jako zdrojový objekt.COleCurrency(
varSrc
) VytvoříCOleCurrency
objekt. Pokusí se převést strukturu VARIANT neboCOleVariant
objekt na hodnotu měny (VT_CY). Pokud je převod úspěšný, převedená hodnota se zkopíruje do novéhoCOleCurrency
objektu. Pokud není, hodnota objektu je nastavena na nuluCOleCurrency
(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 tentoCOleCurrency
objekt je platný.COleCurrency::invalid
Označuje, že tentoCOleCurrency
objekt je neplatný. To znamená, že jeho hodnota může být nesprávná.COleCurrency::null
Označuje, že tentoCOleCurrency
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 tentoCOleCurrency
objekt je platný.COleCurrency::invalid
Označuje, že tentoCOleCurrency
objekt je neplatný. To znamená, že jeho hodnota může být nesprávná.COleCurrency::null
Označuje, že tentoCOleCurrency
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
) HodnotaCURRENCY
se zkopíruje do objektuCOleCurrency
a její stav je nastaven na platný.operator =(
curSrc
) Hodnota a stav operandu, existujícíCOleCurrency
objekt se zkopíruje do tohotoCOleCurrency
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 tohotoCOleCurrency
objektu a jeho stav je nastaven na platný. Pokud převod není úspěšný, hodnota objektuCOleCurrency
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 tentoCOleCurrency
objekt je platný.COleCurrency::invalid
Označuje, že tentoCOleCurrency
objekt je neplatný. To znamená, že jeho hodnota může být nesprávná.COleCurrency::null
Označuje, že tentoCOleCurrency
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.