Klasa COleCurrency
Hermetyzuje CURRENCY
typ danych automatyzacji OLE.
Składnia
class COleCurrency
Elementy członkowskie
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 CArchive obiektu . |
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
) TworzyCOleCurrency
obiekt z wartości CURRENCY .COleCurrency(
curSrc
) TworzyCOleCurrency
obiekt z istniejącegoCOleCurrency
obiektu. Nowy obiekt ma taki sam stan jak obiekt źródłowy.COleCurrency(
varSrc
) KonstruujeCOleCurrency
obiekt. Próbuje przekonwertować strukturę wariantu lubCOleVariant
obiekt na wartość waluty (VT_CY). Jeśli ta konwersja zakończy się pomyślnie, przekonwertowana wartość zostanie skopiowana do nowegoCOleCurrency
obiektu. Jeśli tak nie jest, wartośćCOleCurrency
obiektu jest ustawiona na zero (0) i jego stan na nieprawidłowy.COleCurrency(
nUnits
,nFractionalUnits
) TworzyCOleCurrency
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 tenCOleCurrency
obiekt jest prawidłowy.COleCurrency::invalid
Wskazuje, że tenCOleCurrency
obiekt jest nieprawidłowy. Oznacza to, że jego wartość może być niepoprawna.COleCurrency::null
Wskazuje, że tenCOleCurrency
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 tenCOleCurrency
obiekt jest prawidłowy.COleCurrency::invalid
Wskazuje, że tenCOleCurrency
obiekt jest nieprawidłowy. Oznacza to, że jego wartość może być niepoprawna.COleCurrency::null
Wskazuje, że tenCOleCurrency
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 doCOleCurrency
obiektu, a jego stan jest ustawiony na prawidłowy.operator =(
curSrc
) Wartość i stan operandu, istniejącyCOleCurrency
obiekt są kopiowane do tegoCOleCurrency
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 tegoCOleCurrency
obiektu i jego stan jest ustawiony na 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 tenCOleCurrency
obiekt jest prawidłowy.COleCurrency::invalid
Wskazuje, że tenCOleCurrency
obiekt jest nieprawidłowy. Oznacza to, że jego wartość może być niepoprawna.COleCurrency::null
Wskazuje, że tenCOleCurrency
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.