COleCurrency osztály

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(cySrc) COleCurrency hoz létre objektumot.

  • A COleCurrency(curSrc) egy COleCurrency meglévő COleCurrency objektumból hoz létre objektumot. Az új objektum állapota megegyezik a forrásobjektum állapotával.

  • A COleCurrency(varSrc) objektumot COleCurrency hoz létre. A VARIANT-struktúra vagy COleVariant objektum 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 új COleCurrency objektumba lesz másolva. Ha nem, az COleCurrency objektum értéke nullára (0) van állítva, állapota pedig érvénytelen.

  • A COleCurrency(nUnits, nFractionalUnits) egy COleCurrency objektumot 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::valid Azt jelzi, hogy ez az COleCurrency objektum érvényes.

  • COleCurrency::invalid Azt jelzi, hogy ez COleCurrency az objektum érvénytelen, vagyis az értéke helytelen lehet.

  • COleCurrency::null Azt jelzi, hogy ez COleCurrency az 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::valid Azt jelzi, hogy ez az COleCurrency objektum érvényes.

  • COleCurrency::invalid Azt jelzi, hogy ez COleCurrency az objektum érvénytelen, vagyis az értéke helytelen lehet.

  • COleCurrency::null Azt jelzi, hogy ez COleCurrency az 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) Az CURRENCY érték az COleCurrency objektumba lesz másolva, és az állapota érvényesre van állítva.

  • operátor =(curSrc) Az operandus, egy meglévő COleCurrency objektum értéke és állapota ebbe az COleCurrency objektumba 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 az COleCurrency objektumba lesz másolva, és az állapota érvényesre van állítva. Ha az átalakítás nem sikerült, az COleCurrency objektum é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::valid Azt jelzi, hogy ez az COleCurrency objektum érvényes.

  • COleCurrency::invalid Azt jelzi, hogy ez COleCurrency az objektum érvénytelen, vagyis az értéke helytelen lehet.

  • COleCurrency::null Azt jelzi, hogy ez COleCurrency az 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.

Lásd még

hierarchiadiagram
COleVariant osztály