Klasa COleCurrency

Hermetyzuje CURRENCY typ danych automatyzacji OLE.

Składnia

class COleCurrency

Członkowie

Konstruktory publiczne

Nazwa/nazwisko opis
COleCurrency::COleCurrency COleCurrency Tworzy obiekt.

Metody publiczne

Nazwa/nazwisko opis
COleCurrency::Format Generuje sformatowaną reprezentację COleCurrency ciągu obiektu.
COleCurrency::GetStatus Pobiera stan (ważność) tego COleCurrency obiektu.
COleCurrency::P arseCurrency Odczytuje wartość CURRENCY z ciągu i ustawia wartość COleCurrency.
COleCurrency::SetCurrency Ustawia wartość tego COleCurrency obiektu.
COleCurrency::SetStatus Ustawia stan (ważność) dla tego COleCurrency obiektu.

Operatory publiczne

Nazwa/nazwisko opis
operator = Kopiuje COleCurrency wartość.
operator +, - Dodaje, odejmuje i zmienia znak COleCurrency wartości.
operator +=, -= Dodaje i odejmuje COleCurrency wartość z tego COleCurrency obiektu.
Operator*/ Skaluje COleCurrency wartość według wartości całkowitej.
operator *=, /= Skaluje tę COleCurrency wartość według wartości całkowitej.
Operator << COleCurrency Zwraca wartość do CArchive lub CDumpContext.
Operator >> COleCurrency Wprowadza obiekt z CArchiveobiektu .
operator CURRENCY Konwertuje COleCurrency wartość na walutę.
operator ==, <, <=, itp. Porównuje dwie COleCurrency wartości.

Publiczne elementy członkowskie danych

Nazwa/nazwisko opis
COleCurrency::m_cur Zawiera podstawową walutę dla tego COleCurrency obiektu.
COleCurrency::m_status Zawiera stan tego COleCurrency obiektu.

Uwagi

COleCurrency nie ma klasy bazowej.

WALUTA jest implementowana jako 8-bajtowa, dwuczęściowa wartość całkowita skalowana przez 10 000. Daje to liczbę o stałym punkcie z 15 cyframi po lewej stronie przecinka dziesiętnego i 4 cyfry po prawej stronie. Typ danych CURRENCY jest niezwykle przydatny w obliczeniach obejmujących pieniądze lub w przypadku obliczeń o stałym punkcie, gdzie dokładność jest ważna. Jest to jeden z możliwych typów VARIANT danych automatyzacji OLE.

COleCurrency Implementuje również niektóre podstawowe operacje arytmetyczne dla tego typu stałego punktu. Obsługiwane operacje zostały wybrane do kontrolowania błędów zaokrąglania, które występują podczas obliczeń o stałym punkcie.

Hierarchia dziedziczenia

COleCurrency

Wymagania

Nagłówek: afxdisp.h

COleCurrency::COleCurrency

COleCurrency Tworzy obiekt.

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

COleCurrency(
    long nUnits,
    long nFractionalUnits);

Parametry

cySrc
Wartość WALUTY, która ma zostać skopiowana do nowego COleCurrency obiektu.

curSrc
Istniejący COleCurrency obiekt, który ma zostać skopiowany do nowego COleCurrency obiektu.

varSrc
Istniejąca VARIANT struktura danych (prawdopodobnie COleVariant obiekt) do przekonwertowania na wartość waluty (VT_CY) i skopiowana do nowego COleCurrency obiektu.

nUnits, nFractionalUnits Wskazuje jednostki i część ułamkową (w 1/10 000) wartości do skopiowania do nowego COleCurrency obiektu.

Uwagi

Wszystkie te konstruktory tworzą nowe COleCurrency obiekty zainicjowane do określonej wartości. Poniżej przedstawiono krótki opis każdego z tych konstruktorów. Jeśli nie określono inaczej, stan nowego COleCurrency elementu jest ustawiony na prawidłowy.

  • COleCurrency() Tworzy COleCurrency obiekt zainicjowany do 0 (zero).

  • COleCurrency(cySrc) Tworzy COleCurrency obiekt z wartości CURRENCY .

  • COleCurrency(curSrc) Tworzy COleCurrency obiekt z istniejącego COleCurrency obiektu. Nowy obiekt ma taki sam stan jak obiekt źródłowy.

  • COleCurrency(varSrc) Konstruuje COleCurrency obiekt. Próbuje przekonwertować strukturę wariantu lub COleVariant obiekt na wartość waluty (VT_CY). Jeśli ta konwersja zakończy się pomyślnie, przekonwertowana wartość zostanie skopiowana do nowego COleCurrency obiektu. Jeśli tak nie jest, wartość COleCurrency obiektu jest ustawiona na zero (0) i jego stan na nieprawidłowy.

  • COleCurrency(nUnits, nFractionalUnits) Tworzy COleCurrency obiekt z określonych składników liczbowych. Jeśli wartość bezwzględna części ułamkowej jest większa niż 10 000, odpowiednie dostosowanie zostanie wprowadzone do jednostek. Należy pamiętać, że jednostki i część ułamkowa są określane przez podpisane długie wartości.

Aby uzyskać więcej informacji, zobacz pozycje CURRENCY i VARIANT w zestawie Windows SDK.

Przykład

W poniższych przykładach pokazano efekty konstruktorów zero-parametru i dwóch parametrów:

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

Wywołaj tę funkcję składową, aby utworzyć sformatowaną reprezentację wartości waluty.

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

Parametry

Dwflags
Wskazuje flagi ustawień regionalnych. Tylko następująca flaga ma zastosowanie do waluty:

  • LOCALE_NOUSEROVERRIDE Użyj domyślnych ustawień regionalnych systemu, a nie niestandardowych ustawień użytkownika.

lcid
Wskazuje identyfikator ustawień regionalnych do użycia na potrzeby konwersji.

Wartość zwracana

Element CString zawierający sformatowaną wartość waluty.

Uwagi

Formatuje wartość przy użyciu specyfikacji języka lokalnego (identyfikatory ustawień regionalnych). Symbol waluty nie jest uwzględniony w zwróconej wartości. Jeśli stan tego COleCurrency obiektu ma wartość null, wartość zwracana jest pustym ciągiem. Jeśli stan jest nieprawidłowy, ciąg zwracany jest określony przez zasób ciągu IDS_INVALID_CURRENCY.

Przykład

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

Wywołaj tę funkcję składową, aby uzyskać stan (ważność) danego COleCurrency obiektu.

CurrencyStatus GetStatus() const;

Wartość zwracana

Zwraca stan tej COleCurrency wartości.

Uwagi

Wartość zwracana jest definiowana CurrencyStatus przez wyliczony typ zdefiniowany w COleCurrency klasie.

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

Aby zapoznać się z krótkim opisem tych wartości stanu, zobacz następującą listę:

  • COleCurrency::valid Wskazuje, że ten COleCurrency obiekt jest prawidłowy.

  • COleCurrency::invalid Wskazuje, że ten COleCurrency obiekt jest nieprawidłowy. Oznacza to, że jego wartość może być niepoprawna.

  • COleCurrency::null Wskazuje, że ten COleCurrency obiekt ma wartość null, czyli że dla tego obiektu nie podano żadnej wartości. (Jest to wartość "null" w sensie bazy danych "bez wartości", w przeciwieństwie do wartości NULL języka C++).

Stan COleCurrency obiektu jest nieprawidłowy w następujących przypadkach:

  • Jeśli jego wartość jest ustawiona na podstawie wariantu lub COleVariant wartości, która nie może zostać przekonwertowana na wartość waluty.

  • Jeśli ten obiekt napotkał przepełnienie lub niedopełnienie podczas operacji przypisania arytmetycznego, na przykład += lub *=.

  • Jeśli do tego obiektu przypisano nieprawidłową wartość.

  • Jeśli stan tego obiektu został jawnie ustawiony na nieprawidłowy przy użyciu parametru SetStatus.

Aby uzyskać więcej informacji na temat operacji, które mogą ustawić stan na nieprawidłowy, zobacz następujące funkcje składowe:

Przykład

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

Podstawowa struktura CURRENCY dla tego COleCurrency obiektu.

Uwagi

Uwaga

Zmiana wartości w strukturze dostępnej CURRENCY przez wskaźnik zwrócony przez tę funkcję spowoduje zmianę wartości tego COleCurrency obiektu. Nie zmienia on stanu tego COleCurrency obiektu.

Aby uzyskać więcej informacji, zobacz wpis CURRENCY w zestawie Windows SDK.

COleCurrency::m_status

Typ tego elementu członkowskiego danych jest wyliczonym typem CurrencyStatus, który jest zdefiniowany w COleCurrency klasie .

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

Uwagi

Aby zapoznać się z krótkim opisem tych wartości stanu, zobacz następującą listę:

  • COleCurrency::valid Wskazuje, że ten COleCurrency obiekt jest prawidłowy.

  • COleCurrency::invalid Wskazuje, że ten COleCurrency obiekt jest nieprawidłowy. Oznacza to, że jego wartość może być niepoprawna.

  • COleCurrency::null Wskazuje, że ten COleCurrency obiekt ma wartość null, czyli że dla tego obiektu nie podano żadnej wartości. (Jest to wartość "null" w sensie bazy danych "bez wartości", w przeciwieństwie do wartości NULL języka C++).

Stan COleCurrency obiektu jest nieprawidłowy w następujących przypadkach:

  • Jeśli jego wartość jest ustawiona na podstawie wariantu lub COleVariant wartości, która nie może zostać przekonwertowana na wartość waluty.

  • Jeśli ten obiekt napotkał przepełnienie lub niedopełnienie podczas operacji przypisania arytmetycznego, na przykład += lub *=.

  • Jeśli do tego obiektu przypisano nieprawidłową wartość.

  • Jeśli stan tego obiektu został jawnie ustawiony na nieprawidłowy przy użyciu parametru SetStatus.

Aby uzyskać więcej informacji na temat operacji, które mogą ustawić stan na nieprawidłowy, zobacz następujące funkcje składowe:

Uwaga

Ten element członkowski danych jest przeznaczony dla zaawansowanych sytuacji programistycznych. Należy użyć wbudowanych funkcji składowych GetStatus i SetStatus. Zobacz SetStatus , aby uzyskać dodatkowe ostrzeżenia dotyczące jawnego ustawiania tego elementu członkowskiego danych.

COleCurrency::operator =

Te przeciążone operatory przypisania kopiują wartość waluty źródłowej do tego COleCurrency obiektu.

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

Uwagi

Krótki opis każdego operatora:

  • operator =(cySrc) Wartość CURRENCY jest kopiowana do COleCurrency obiektu, a jego stan jest ustawiony na prawidłowy.

  • operator =(curSrc) Wartość i stan operandu, istniejący COleCurrency obiekt są kopiowane do tego COleCurrency obiektu.

  • operator =(varSrc) Jeśli konwersja VARIANT wartości (lub obiektu COleVariant ) na walutę ( VT_CY) zakończy się pomyślnie, przekonwertowana wartość zostanie skopiowana do tego COleCurrency obiektu, a jego stan jest prawidłowy. Jeśli konwersja nie powiedzie się, wartość COleCurrency obiektu jest ustawiona na 0, a jego stan jest nieprawidłowy.

Aby uzyskać więcej informacji, zobacz pozycje CURRENCY i VARIANT w zestawie Windows SDK.

Przykład

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

Te operatory umożliwiają dodawanie i odejmowanie dwóch COleCurrency wartości do i od siebie oraz zmianę COleCurrency znaku wartości.

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

Uwagi

Jeśli jeden z operandów ma wartość null, stan wynikowej COleCurrency wartości ma wartość null.

Jeśli operacja arytmetyczna przepełnia się, wynikowa COleCurrency wartość jest nieprawidłowa.

Jeśli operand jest nieprawidłowy, a drugi nie ma wartości null, stan wynikowej COleCurrency wartości jest nieprawidłowy.

Aby uzyskać więcej informacji na temat prawidłowych, nieprawidłowych i null wartości stanu, zobacz zmienną składową m_status .

Przykład

// 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żliwia dodawanie i odejmowanie COleCurrency wartości do i z tego COleCurrency obiektu.

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

Uwagi

Jeśli którykolwiek z operandów ma wartość null, stan tego COleCurrency obiektu ma wartość null.

Jeśli operacja arytmetyczna przepełnia się, stan tego COleCurrency obiektu jest nieprawidłowy.

Jeśli jeden z operandów jest nieprawidłowy, a drugi nie ma wartości null, stan tego COleCurrency obiektu jest nieprawidłowy.

Aby uzyskać więcej informacji na temat prawidłowych, nieprawidłowych i null wartości stanu, zobacz zmienną składową m_status .

Przykład

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

Umożliwia skalowanie COleCurrency wartości według wartości całkowitej.

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

Uwagi

COleCurrency Jeśli operand ma wartość null, stan wynikowej COleCurrency wartości ma wartość null.

Jeśli operacja arytmetyczna przepełnia się lub podpływy, stan wynikowej COleCurrency wartości jest nieprawidłowy.

COleCurrency Jeśli operand jest nieprawidłowy, stan wynikowej COleCurrency wartości jest nieprawidłowy.

Aby uzyskać więcej informacji na temat prawidłowych, nieprawidłowych i null wartości stanu, zobacz zmienną składową m_status .

Przykład

// 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żliwia skalowanie tej COleCurrency wartości według wartości całkowitej.

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

Uwagi

COleCurrency Jeśli operand ma wartość null, stan tego COleCurrency obiektu ma wartość null.

Jeśli operacja arytmetyczna przepełnia się, stan tego COleCurrency obiektu jest nieprawidłowy.

COleCurrency Jeśli operand jest nieprawidłowy, stan tego COleCurrency obiektu jest nieprawidłowy.

Aby uzyskać więcej informacji na temat prawidłowych, nieprawidłowych i null wartości stanu, zobacz zmienną składową m_status .

Przykład

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

Obsługuje usuwanie danych diagnostycznych i przechowywanie ich w archiwum.

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

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

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

Uwagi

Operator wyodrębniania ( >>) obsługuje ładowanie z archiwum.

COleCurrency::operator CURRENCY

CURRENCY Zwraca strukturę, której wartość jest kopiowana z tego COleCurrency obiektu.

operator CURRENCY() const;

Uwagi

COleCurrency::P arseCurrency

Wywołaj tę funkcję składową, aby przeanalizować ciąg w celu odczytania wartości waluty.

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

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

Parametry

lpszCurrency
Wskaźnik do ciągu zakończonego wartością null, który ma zostać przeanalizowany.

Dwflags
Wskazuje flagi ustawień regionalnych, prawdopodobnie następującą flagę:

  • LOCALE_NOUSEROVERRIDE Użyj domyślnych ustawień regionalnych systemu, a nie niestandardowych ustawień użytkownika.

lcid
Wskazuje identyfikator ustawień regionalnych do użycia na potrzeby konwersji.

Wartość zwracana

Nonzero, jeśli ciąg został pomyślnie przekonwertowany na wartość waluty, w przeciwnym razie 0.

Uwagi

Używa on specyfikacji języka lokalnego (identyfikatory ustawień regionalnych) dla znaczenia znaków nieliczbowych w ciągu źródłowym.

Aby zapoznać się z omówieniem wartości identyfikatorów ustawień regionalnych, zobacz Obsługa wielu języków.

Jeśli ciąg został pomyślnie przekonwertowany na wartość waluty, wartość tego COleCurrency obiektu jest ustawiona na tę wartość, a jego stan na prawidłowy.

Jeśli nie można przekonwertować ciągu na wartość waluty lub jeśli wystąpił przepełnienie liczbowe, stan tego COleCurrency obiektu jest nieprawidłowy.

Jeśli konwersja ciągu nie powiodła się z powodu błędów alokacji pamięci, ta funkcja zgłasza wyjątek CMemoryException. W innym stanie błędu ta funkcja zgłasza wyjątek COleException.

Przykład

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

Operatory relacyjne COleCurrency

Porównaj dwie wartości waluty i zwróć wartość niezerową, jeśli warunek ma wartość true; w przeciwnym razie 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;

Uwagi

Uwaga

Wartość zwracana operacji porządkowania ( <, <=,>> , = ) jest niezdefiniowana, jeśli stan operandu ma wartość null lub jest nieprawidłowy. Operatory równości ( ==, !=) uwzględniają stan operandów.

Przykład

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

Wywołaj tę funkcję składową, aby ustawić jednostki i część ułamkową tego COleCurrency obiektu.

void SetCurrency(
    long nUnits,
    long nFractionalUnits);

Parametry

nUnits, nFractionalUnits Wskazuje jednostki i część ułamkową (w 1/10 000) wartości do skopiowania do tego COleCurrency obiektu.

Uwagi

Jeśli wartość bezwzględna części ułamkowej jest większa niż 10 000, odpowiednie dostosowanie zostanie wprowadzone do jednostek, jak pokazano w trzecim z poniższych przykładów.

Należy pamiętać, że jednostki i część ułamkowa są określane przez podpisane długie wartości. Czwarty z poniższych przykładów pokazuje, co się stanie, gdy parametry mają różne znaki.

Przykład

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

Wywołaj tę funkcję składową, aby ustawić stan (ważność) tego COleCurrency obiektu.

void SetStatus(CurrencyStatus  status  );

Parametry

status
Nowy stan dla tego COleCurrency obiektu.

Uwagi

Wartość parametru stanu jest definiowana CurrencyStatus przez wyliczony typ, który jest zdefiniowany w COleCurrency klasie.

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

Aby zapoznać się z krótkim opisem tych wartości stanu, zobacz następującą listę:

  • COleCurrency::valid Wskazuje, że ten COleCurrency obiekt jest prawidłowy.

  • COleCurrency::invalid Wskazuje, że ten COleCurrency obiekt jest nieprawidłowy. Oznacza to, że jego wartość może być niepoprawna.

  • COleCurrency::null Wskazuje, że ten COleCurrency obiekt ma wartość null, czyli że dla tego obiektu nie podano żadnej wartości. (Jest to wartość "null" w sensie bazy danych "bez wartości", w przeciwieństwie do wartości NULL języka C++).

Uwaga

Ta funkcja jest przeznaczony dla zaawansowanych sytuacji programistycznych. Ta funkcja nie zmienia danych w tym obiekcie. Będzie ona najczęściej używana do ustawiania stanu na wartość null lub jest nieprawidłowa. Należy pamiętać, że operator przypisania ( operator =) i SetCurrency ustawiają stan obiektu na podstawie wartości źródłowych.

Zobacz też

Wykres hierarchii
Klasa COleVariant