Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Megjegyzés:
A Microsoft Foundation Classes (MFC) könyvtár továbbra is támogatott. A továbbiakban azonban nem adunk hozzá funkciókat, és nem frissítjük a dokumentációt.
Beágyazza az CURRENCY OLE-automatizálás adattípusát.
Szemantika
class COleCurrency
Tagok
Nyilvános konstruktorok
| Név | Leírás |
|---|---|
| COleCurrency::COleCurrency | Egy COleCurrency objektumot hoz létre. |
Nyilvános metódusok
| Név | Leírás |
|---|---|
| COleCurrency::Format | Egy objektum formázott sztring-ábrázolását COleCurrency hozza létre. |
| COleCurrency::GetStatus | Lekéri az objektum állapotát (érvényességét COleCurrency ). |
| COleCurrency::P arseCurrency | Beolvassa a PÉNZNEM értéket egy sztringből, és beállítja COleCurrencya következő értékét: . |
| COleCurrency::SetCurrency | Az objektum értékét állítja be COleCurrency . |
| COleCurrency::SetStatus | Az objektum állapotát (érvényességét COleCurrency ) állítja be. |
Nyilvános operátorok
| Név | Leírás |
|---|---|
| operátor = | Egy érték másolása COleCurrency . |
| operátor +, - | Hozzáadja, kivonja és módosítja az értékek jelét COleCurrency . |
| operátor +=, -= | Hozzáad és kivon egy COleCurrency értéket ebből az COleCurrency objektumból. |
| operátor*/ |
COleCurrency Egy értéket egész számra skáláz. |
| operátor *=, /= | Ezt az COleCurrency értéket egész szám értékével skálázza. |
| operátor << | Értéket ad COleCurrency ki a következőre CArchive : vagy CDumpContext. |
| operátor >> | Beír egy objektumot COleCurrency a fájlból CArchive. |
| operátor PÉNZNEME |
COleCurrency Egy értéket pénznemgé alakít át. |
| operátor ==, <, <=stb. | Két COleCurrency értéket hasonlít össze. |
Nyilvános adatok tagjai
| Név | Leírás |
|---|---|
| COleCurrency::m_cur | Az objektum mögöttes PÉNZNEMét COleCurrency tartalmazza. |
| COleCurrency::m_status | Az objektum állapotát COleCurrency tartalmazza. |
Megjegyzések
COleCurrency nem rendelkezik alaposztálysal.
A CURRENCY 8 bájtos, kétrészes egész számként van implementálva, 10 000-zel skálázva. Ez egy rögzített pontszámot ad meg a tizedesvessző bal oldalán 15 számjegyből, jobbra pedig 4 számjegyből. A PÉNZNEM adattípus rendkívül hasznos a pénzzel kapcsolatos számításokhoz, vagy bármely rögzítettpontos számításhoz, ahol a pontosság fontos. Ez az OLE-automatizálás adattípusának egyik lehetséges típusa VARIANT .
COleCurrency Emellett implementál néhány alapvető aritmetikai műveletet is ehhez a rögzített ponttípushoz. A támogatott műveletek lettek kiválasztva a rögzítettpontos számítások során előforduló kerekítési hibák szabályozásához.
Öröklési hierarchia
COleCurrency
Követelmények
Fejléc: afxdisp.h
COleCurrency::COleCurrency
Egy COleCurrency objektumot hoz létre.
COleCurrency();
COleCurrency(CURRENCY cySrc);
COleCurrency(const COleCurrency& curSrc);
COleCurrency(const VARIANT& varSrc);
COleCurrency(
long nUnits,
long nFractionalUnits);
Paraméterek
cySrc
Az új COleCurrency objektumba másolandó PÉNZNEM érték.
curSrc
Az új COleCurrency objektumba másolandó meglévő COleCurrency objektum.
varSrc
Egy meglévő VARIANT adatstruktúra (esetleg egy COleVariant objektum), amelyet pénznemértékké (VT_CY) kell konvertálni, majd átmásolni az új COleCurrency objektumba.
nUnits, nFractionalUnits Az új COleCurrency objektumba másolandó érték egységeit és törtrészét (1/10 000-ben) jelzi.
Megjegyzések
Mindegyik konstruktor új COleCurrency objektumokat hoz létre a megadott értékre inicializálva. Ezeket a konstruktorokat rövid leírás követi. Ha másként nem jelezzük, az új COleCurrency elem állapota érvényesre van állítva.
A COleCurrency() 0 -ra (nulla) inicializált objektumot hoz létre
COleCurrency.A COleCurrency(
curSrc) egyCOleCurrencymeglévőCOleCurrencyobjektumból hoz létre objektumot. Az új objektum állapota megegyezik a forrásobjektum állapotával.A COleCurrency(
varSrc) objektumotCOleCurrencyhoz létre. A VARIANT-struktúra vagyCOleVariantobjektum pénznemértékké (VT_CY) való konvertálásának kísérlete. Ha ez az átalakítás sikeres, a konvertált érték az újCOleCurrencyobjektumba lesz másolva. Ha nem, azCOleCurrencyobjektum értéke nullára (0) van állítva, állapota pedig érvénytelen.A COleCurrency(
nUnits,nFractionalUnits) egyCOleCurrencyobjektumot hoz létre a megadott numerikus összetevőkből. Ha a törtrész abszolút értéke nagyobb 10 000-nél, a megfelelő módosítást az egységeken kell elvégezni. Vegye figyelembe, hogy az egységeket és a törtrészt aláírt hosszú értékek írják le.
További információkért tekintse meg a Pénznem és a VARIANT bejegyzéseket a Windows SDK-ban.
példa
Az alábbi példák a nullaparaméteres és a kétparaméteres konstruktorok hatásait mutatják be:
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
Hívja meg ezt a tagfüggvényt a pénznemérték formázott ábrázolásának létrehozásához.
CString Format(DWORD dwFlags = 0, LCID lcid = LANG_USER_DEFAULT) const;
Paraméterek
dwFlags
A területi beállítások jelzőit jelzi. Csak a következő jelző érvényes a pénznemre:
- LOCALE_NOUSEROVERRIDE Egyéni felhasználói beállítások helyett használja a rendszer alapértelmezett területi beállításait.
A konvertáláshoz használandó területi azonosítót jelzi.
Visszaadott érték
A CString formázott pénznemértéket tartalmazó érték.
Megjegyzések
Az értéket a helyi nyelvi specifikációk (területi azonosítók) használatával formázhatja. A visszaadott érték nem tartalmaz pénznemszimbólumot. Ha az COleCurrency objektum állapota null, a visszatérési érték egy üres sztring. Ha az állapot érvénytelen, a visszatérési sztringet a sztringerőforrás IDS_INVALID_CURRENCY adja meg.
példa
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
Hívja meg ezt a tagfüggvényt egy adott COleCurrency objektum állapotának (érvényességének) lekéréséhez.
CurrencyStatus GetStatus() const;
Visszaadott érték
Ennek az értéknek COleCurrency az állapotát adja vissza.
Megjegyzések
A visszatérési értéket az CurrencyStatus osztályon belül COleCurrency definiált számbavételi típus határozza meg.
enum CurrencyStatus {
valid = 0,
invalid = 1,
null = 2
};
Az állapotértékek rövid leírását az alábbi listában találja:
COleCurrency::validAzt jelzi, hogy ez azCOleCurrencyobjektum érvényes.COleCurrency::invalidAzt jelzi, hogy ezCOleCurrencyaz objektum érvénytelen, vagyis az értéke helytelen lehet.COleCurrency::nullAzt jelzi, hogy ezCOleCurrencyaz objektum null értékű, vagyis nincs megadva érték ehhez az objektumhoz. (Ez "null" az adatbázis értelemben "nincs érték", szemben a C++ NULL.)
Az objektum állapota COleCurrency az alábbi esetekben érvénytelen:
Ha az értéke OLYAN VARIANT-ból vagy
COleVariantértékből van beállítva, amely nem konvertálható pénznemértékké.Ha az objektum túlcsordulást vagy túlcsordulást észlelt egy számtani hozzárendelési művelet során, például
+=vagy *=.Ha érvénytelen érték lett hozzárendelve ehhez az objektumhoz.
Ha az objektum állapota a SetStatus használatával explicit módon érvénytelenre lett állítva.
További információ azokról a műveletekről, amelyek érvénytelen állapotot állíthatnak be, tekintse meg a következő tagfüggvényeket:
példa
// 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
Az objektum mögöttes PÉNZNEM struktúrája COleCurrency .
Megjegyzések
Figyelmeztetés
A függvény által visszaadott mutató által elért szerkezet értékének CURRENCY módosítása megváltoztatja az COleCurrency objektum értékét. Ez nem módosítja COleCurrency az objektum állapotát.
További információkért tekintse meg a Pénznem bejegyzést a Windows SDK-ban.
COleCurrency::m_status
Ennek az adattagnak a típusa az osztályon belül CurrencyStatus definiált számbavételi típusCOleCurrency.
enum CurrencyStatus{
valid = 0,
invalid = 1,
null = 2,
};
Megjegyzések
Az állapotértékek rövid leírását az alábbi listában találja:
COleCurrency::validAzt jelzi, hogy ez azCOleCurrencyobjektum érvényes.COleCurrency::invalidAzt jelzi, hogy ezCOleCurrencyaz objektum érvénytelen, vagyis az értéke helytelen lehet.COleCurrency::nullAzt jelzi, hogy ezCOleCurrencyaz objektum null értékű, vagyis nincs megadva érték ehhez az objektumhoz. (Ez "null" az adatbázis értelemben "nincs érték", szemben a C++ NULL.)
Az objektum állapota COleCurrency az alábbi esetekben érvénytelen:
Ha az értéke OLYAN VARIANT-ból vagy
COleVariantértékből van beállítva, amely nem konvertálható pénznemértékké.Ha az objektum túlcsordulást vagy túlcsordulást észlelt egy számtani hozzárendelési művelet során, például
+=vagy *=.Ha érvénytelen érték lett hozzárendelve ehhez az objektumhoz.
Ha az objektum állapota a SetStatus használatával explicit módon érvénytelenre lett állítva.
További információ azokról a műveletekről, amelyek érvénytelen állapotot állíthatnak be, tekintse meg a következő tagfüggvényeket:
Figyelmeztetés
Ez az adattag speciális programozási helyzetekhez készült. A GetStatus és a SetStatus beágyazott tagfüggvényeket kell használnia. További SetStatus figyelmeztetéseket talál az adattag explicit beállításával kapcsolatban.
COleCurrency::operátor =
Ezek a túlterhelt hozzárendelés-operátorok a forrás pénznemértékét másolja ebbe az COleCurrency objektumba.
const COleCurrency& operator=(CURRENCY cySrc);
const COleCurrency& operator=(const COleCurrency& curSrc);
const COleCurrency& operator=(const VARIANT& varSrc);
Megjegyzések
Az egyes operátorok rövid leírása a következő:
operátor =(
cySrc) AzCURRENCYérték azCOleCurrencyobjektumba lesz másolva, és az állapota érvényesre van állítva.operátor =(
curSrc) Az operandus, egy meglévőCOleCurrencyobjektum értéke és állapota ebbe azCOleCurrencyobjektumba lesz másolva.operátor =(varSrc) Ha az
VARIANTérték (vagy COleVariant objektum) pénznemre (VT_CY) való konvertálása sikeres, a konvertált érték ebbe azCOleCurrencyobjektumba lesz másolva, és az állapota érvényesre van állítva. Ha az átalakítás nem sikerült, azCOleCurrencyobjektum értéke 0, az állapota pedig érvénytelen lesz.
További információkért tekintse meg a Pénznem és a VARIANT bejegyzéseket a Windows SDK-ban.
példa
// 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::operátor +, -
Ezek az operátorok lehetővé teszik két COleCurrency érték egymáshoz való hozzáadását és kivonását, valamint egy COleCurrency érték jelének módosítását.
COleCurrency operator+(const COleCurrency& cur) const;
COleCurrency operator-(const COleCurrency& cur) const;
COleCurrency operator-() const;
Megjegyzések
Ha az operandusok bármelyike null értékű, az eredményül kapott COleCurrency érték állapota null.
Ha az aritmetikai művelet túlcsordul, az eredményül kapott COleCurrency érték érvénytelen.
Ha az operandus érvénytelen, a másik pedig nem null, az eredményként kapott COleCurrency érték állapota érvénytelen.
Az érvényes, érvénytelen és null állapotértékekkel kapcsolatos további információkért tekintse meg a m_status tagváltozót.
példa
// 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::operátor +=, -=
Lehetővé teszi egy érték hozzáadását és kivonását COleCurrency ebből az COleCurrency objektumból.
const COleCurrency& operator+=(const COleCurrency& cur);
const COleCurrency& operator-=(const COleCurrency& cur);
Megjegyzések
Ha az operandusok egyike null értékű, az objektum állapota COleCurrency null értékű.
Ha az aritmetikai művelet túlcsordul, az objektum állapota COleCurrency érvénytelenre van állítva.
Ha az egyik operandus érvénytelen, a másik pedig nem null értékű, az objektum állapota COleCurrency érvénytelen lesz.
Az érvényes, érvénytelen és null állapotértékekkel kapcsolatos további információkért tekintse meg a m_status tagváltozót.
példa
// 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::operátor * és /
Lehetővé teszi az COleCurrency értékek skálázását egy integrál érték alapján.
COleCurrency operator*(long nOperand) const;
COleCurrency operator/(long nOperand) const;
Megjegyzések
Ha az COleCurrency operandus null, az eredményként kapott COleCurrency érték értéke null.
Ha az aritmetikai művelet túlcsordul vagy alulcsordul, az eredményül kapott COleCurrency érték állapota érvénytelen.
Ha az COleCurrency operandus érvénytelen, az eredményként kapott COleCurrency érték állapota érvénytelen.
Az érvényes, érvénytelen és null állapotértékekkel kapcsolatos további információkért tekintse meg a m_status tagváltozót.
példa
// 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::operátor *=, /=
Lehetővé teszi, hogy ezt az COleCurrency értéket egy integrál értékkel skálázza.
const COleCurrency& operator*=(long nOperand);
const COleCurrency& operator/=(long nOperand);
Megjegyzések
Ha az COleCurrency operandus null értékű, az COleCurrency objektum állapota null értékűre van állítva.
Ha az aritmetikai művelet túlcsordul, az objektum állapota COleCurrency érvénytelenre van állítva.
Ha az COleCurrency operandus érvénytelen, az objektum állapota COleCurrency érvénytelenre van állítva.
Az érvényes, érvénytelen és null állapotértékekkel kapcsolatos további információkért tekintse meg a m_status tagváltozót.
példa
// 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 >>
Támogatja a diagnosztikai memóriaképek készítését és az archívumba való tárolást.
friend CDumpContext& operator<<(
CDumpContext& dc,
COleCurrency curSrc);
friend CArchive& operator<<(
CArchive& ar,
COleCurrency curSrc);
friend CArchive& operator>>(
CArchive& ar,
COleCurrency& curSrc);
Megjegyzések
A kinyerési ( >>) operátor támogatja az archívumból való betöltést.
COleCurrency::operátor PÉNZNEME
Olyan struktúrát CURRENCY ad vissza, amelynek az értékét ebből az COleCurrency objektumból másolja a rendszer.
operator CURRENCY() const;
Megjegyzések
COleCurrency::P arseCurrency
Hívja meg ezt a tagfüggvényt egy sztring elemzéséhez egy pénznemérték olvasásához.
BOOL ParseCurrency(
LPCTSTR lpszCurrency,
DWORD dwFlags = 0,
LCID lcid = LANG_USER_DEFAULT);
throw(CMemoryException*);
throw(COleException*);
Paraméterek
lpszCurrency
Az elemezni kívánt null értékű sztringre mutató mutató.
dwFlags
A területi beállítások jelzőit jelzi, esetleg a következő jelölőt:
- LOCALE_NOUSEROVERRIDE Egyéni felhasználói beállítások helyett használja a rendszer alapértelmezett területi beállításait.
A konvertáláshoz használandó területi azonosítót jelzi.
Visszaadott érték
Nem érvényes, ha a sztringet sikeresen konvertálták pénznemértékké, ellenkező esetben 0.
Megjegyzések
Helyi nyelvi specifikációkat (területi azonosítókat) használ a forrássztringben szereplő nem numerikus karakterek jelentésére.
A területi azonosítók értékeiről a Több nyelv támogatása című témakörben olvashat bővebben.
Ha a sztringet sikeresen konvertálták pénznemértékké, az COleCurrency objektum értéke erre az értékre van állítva, és az állapota érvényes lesz.
Ha a sztring nem konvertálható pénznemértékké, vagy numerikus túlcsordulás történt, az objektum állapota COleCurrency érvénytelen.
Ha a sztringátalakítás memóriafoglalási hibák miatt meghiúsult, ez a függvény CMemoryException értéket ad vissza. Bármely más hibaállapotban ez a függvény COleException hibát eredményez.
példa
// works if default locale has dot decimal point
COleCurrency cur;
cur.ParseCurrency(_T("$135.95"), 0);
ASSERT(cur == COleCurrency(135, 9500));
COleCurrency relációs operátorok
Hasonlítson össze két pénznemértéket, és ha a feltétel igaz, akkor a nem nulla értéket adja vissza; egyéb esetben 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;
Megjegyzések
Megjegyzés:
A rendezési műveletek visszatérési értéke ( <, <= , >=>) nem definiált, ha bármelyik operandus állapota null vagy érvénytelen. Az egyenlőségi operátorok (==, !=) figyelembe veszik az operandusok állapotát.
példa
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
Hívja meg ezt a tagfüggvényt az objektum egységeinek és törtrészének beállításához COleCurrency .
void SetCurrency(
long nUnits,
long nFractionalUnits);
Paraméterek
nUnits, nFractionalUnits Az objektumba COleCurrency másolandó érték egységeit és törtrészét (1/10 000-ben) jelzi.
Megjegyzések
Ha a törtrész abszolút értéke nagyobb 10 000-nél, a megfelelő módosítást kell végrehajtani az egységeken, ahogy az az alábbi példák harmadik részében is látható.
Vegye figyelembe, hogy az egységeket és a törtrészt aláírt hosszú értékek írják le. Az alábbi példák negyedike bemutatja, mi történik, ha a paramétereknek különböző jelei vannak.
példa
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
Hívja meg ezt a tagfüggvényt az objektum állapotának (érvényességének) beállításához COleCurrency .
void SetStatus(CurrencyStatus status );
Paraméterek
állapot
Az objektum új állapota COleCurrency .
Megjegyzések
Az állapotparaméter értékét az CurrencyStatus osztályon belül COleCurrency definiált számbavételi típus határozza meg.
enum CurrencyStatus {
valid = 0,
invalid = 1,
null = 2
};
Az állapotértékek rövid leírását az alábbi listában találja:
COleCurrency::validAzt jelzi, hogy ez azCOleCurrencyobjektum érvényes.COleCurrency::invalidAzt jelzi, hogy ezCOleCurrencyaz objektum érvénytelen, vagyis az értéke helytelen lehet.COleCurrency::nullAzt jelzi, hogy ezCOleCurrencyaz objektum null értékű, vagyis nincs megadva érték ehhez az objektumhoz. (Ez "null" az adatbázis értelemben "nincs érték", szemben a C++ NULL.)
Figyelmeztetés
Ez a függvény speciális programozási helyzetekhez használható. Ez a függvény nem módosítja az objektumban lévő adatokat. Az állapotot leggyakrabban null vagy érvénytelen értékre állítja. Vegye figyelembe, hogy a hozzárendelési operátor (operátor =) és a SetCurrency az objektum állapotát a forrásérték(ek) alapján állítja be.