COleCurrency 클래스
OLE 자동화의 CURRENCY
데이터 형식을 캡슐화합니다.
구문
class COleCurrency
멤버
공용 생성자
속성 | 설명 |
---|---|
COleCurrency::COleCurrency | COleCurrency 개체를 생성합니다. |
공용 메서드
이름 | 설명 |
---|---|
COleCurrency::Format | 개체의 형식이 지정된 문자열 표현을 COleCurrency 생성합니다. |
COleCurrency::GetStatus | 이 COleCurrency 개체의 상태(유효성)를 가져옵니다. |
COleCurrency::P arseCurrency | 문자열에서 CURRENCY 값을 읽고 값을 설정합니다 COleCurrency . |
COleCurrency::SetCurrency | 이 COleCurrency 개체의 값을 설정합니다. |
COleCurrency::SetStatus | 이 COleCurrency 개체의 상태(유효성)를 설정합니다. |
Public 연산자
속성 | 설명 |
---|---|
연산자 = | 값을 복사합니다 COleCurrency . |
연산자 +, - | 값의 COleCurrency 기호를 추가, 빼기 및 변경합니다. |
연산자 +=, -= | 이 COleCurrency 개체에서 값을 추가하고 뺍니다COleCurrency . |
연산자*/ | 정수 COleCurrency 값으로 값의 크기를 조정합니다. |
연산자 *=, /= | 이 COleCurrency 값의 크기를 정수 값으로 조정합니다. |
연산자 << | 값을 COleCurrency 에 출력 CArchive 합니다 CDumpContext . |
연산자 >> | 에서 개체를 COleCurrency 입력합니다 CArchive . |
연산자 CURRENCY | 값을 CURRENCY로 변환합니다 COleCurrency . |
operator ==, <, <=, etc. | 두 COleCurrency 값을 비교합니다. |
공용 데이터 멤버
속성 | 설명 |
---|---|
COleCurrency::m_cur | 이 COleCurrency 개체의 기본 CURRENCY를 포함합니다. |
COleCurrency::m_status | 이 COleCurrency 개체의 상태를 포함합니다. |
설명
COleCurrency
에는 기본 클래스가 없습니다.
CURRENCY는 10,000으로 확장된 8 바이트, 2의 보수 정수 값으로 구현됩니다. 소수점 기호 왼쪽에는 15자리 고정 소수점 번호가 있고 오른쪽에는 4자리 고정 소수점 번호가 있습니다. CURRENCY 데이터 형식은 돈과 관련된 계산이나 정확도가 중요한 고정 소수점 계산에 매우 유용합니다. OLE 자동화의 데이터 형식에 사용할 수 있는 VARIANT
형식 중 하나입니다.
COleCurrency
또한 이 고정 소수점 형식에 대한 몇 가지 기본 산술 연산을 구현합니다. 고정 소수점 계산 중에 발생하는 반올림 오류를 제어하기 위해 지원되는 작업이 선택되었습니다.
상속 계층 구조
COleCurrency
요구 사항
헤더: afxdisp.h
COleCurrency::COleCurrency
COleCurrency
개체를 생성합니다.
COleCurrency();
COleCurrency(CURRENCY cySrc);
COleCurrency(const COleCurrency& curSrc);
COleCurrency(const VARIANT& varSrc);
COleCurrency(
long nUnits,
long nFractionalUnits);
매개 변수
cySrc
새 COleCurrency
개체에 복사할 CURRENCY 값입니다.
curSrc
새 COleCurrency
개체에 복사할 기존 COleCurrency
개체입니다.
varSrc
통화 값(VT_CY)으로 변환하고 새 COleCurrency
개체로 복사할 기존 VARIANT
데이터 구조(개체일 수 있음COleVariant
)입니다.
nUnits, nFractionalUnits 새 COleCurrency
개체에 복사할 값의 단위 및 소수 부분(1/10,000초)을 나타냅니다.
설명
이러한 모든 생성자는 지정된 값으로 초기화된 새 COleCurrency
개체를 만듭니다. 이러한 각 생성자에 대한 간략한 설명은 다음과 같습니다. 달리 명시되지 않는 한 새 COleCurrency
항목의 상태는 유효한 상태로 설정됩니다.
COleCurrency() 0으로 초기화된 개체를 생성
COleCurrency
합니다.COleCurrency(
cySrc
) CURRENCY 값에서 개체를 생성합니다COleCurrency
.COleCurrency(
curSrc
) 기존COleCurrency
개체에서 개체를 생성COleCurrency
합니다. 새 개체의 상태는 원본 개체와 동일합니다.COleCurrency(
varSrc
) 개체를COleCurrency
생성합니다. VARIANT 구조 또는COleVariant
개체를 통화(VT_CY) 값으로 변환하려고 시도합니다. 이 변환에 성공하면 변환된 값이 새COleCurrency
개체로 복사됩니다. 그렇지 않으면 개체의COleCurrency
값이 0으로 설정되고 해당 상태가 유효하지 않습니다.COleCurrency(
nUnits
,nFractionalUnits
) 지정된 숫자 구성 요소에서 개체를 생성COleCurrency
합니다. 소수 부분의 절대값이 10,000보다 크면 단위를 적절하게 조정합니다. 단위 및 소수 부분은 부가된 long 값으로 지정됩니다.
자세한 내용은 Windows SDK의 CURRENCY 및 VARIANT 항목을 참조하세요.
예시
다음 예제에서는 매개 변수 0개와 매개 변수 2개 생성자의 효과를 보여 줍니다.
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
이 멤버 함수를 호출하여 통화 값의 형식이 지정된 표현을 만듭니다.
CString Format(DWORD dwFlags = 0, LCID lcid = LANG_USER_DEFAULT) const;
매개 변수
dwFlags
로캘 설정에 대한 플래그를 나타냅니다. 다음 플래그만 통화와 관련이 있습니다.
- LOCALE_NOUSEROVERRIDE 사용자 지정 사용자 설정 대신 시스템 기본 로캘 설정을 사용합니다.
lcid
변환에 사용할 로캘 ID를 나타냅니다.
Return Value
형식이 지정된 통화 값을 포함하는 A CString
입니다.
설명
로컬 언어 사양(로캘 ID)을 사용하여 값의 형식을 지정합니다. 통화 기호는 반환되는 값에 포함되지 않습니다. 이 COleCurrency
개체의 상태가 null이면 반환 값은 빈 문자열입니다. 상태가 잘못된 경우 반환 문자열은 문자열 리소스 IDS_INVALID_CURRENCY 의해 지정됩니다.
예시
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
이 멤버 함수를 호출하여 지정된 COleCurrency
개체의 상태(유효성)를 가져옵니다.
CurrencyStatus GetStatus() const;
Return Value
이 COleCurrency
값의 상태를 반환합니다.
설명
반환 값은 클래스 내에 정의된 열거형 형식으로 COleCurrency
정의 CurrencyStatus
됩니다.
enum CurrencyStatus {
valid = 0,
invalid = 1,
null = 2
};
이러한 상태 값에 대한 간략한 설명은 다음 목록을 참조하세요.
COleCurrency::valid
이COleCurrency
개체가 유효하다는 것을 나타냅니다.COleCurrency::invalid
이COleCurrency
개체가 잘못되었음을 나타냅니다. 즉, 해당 값이 잘못되었을 수 있습니다.COleCurrency::null
이COleCurrency
개체가 null임을 나타냅니다. 즉, 이 개체에 대한 값이 제공되지 않았습니다. (C++ NULL과 달리 데이터베이스의 "값 없음"에서 "null"입니다.)
다음과 같은 경우 개체의 COleCurrency
상태가 잘못되었습니다.
값이 VARIANT 또는
COleVariant
통화 값으로 변환할 수 없는 값에서 설정된 경우이 개체가 산술 할당 작업 중에 오버플로 또는 언더플로가 발생한 경우(예
+=
*=:이 개체에 잘못된 값이 할당된 경우
SetStatus를 사용하여 이 개체의 상태가 명시적으로 유효하지 않은 것으로 설정된 경우
상태를 잘못된 것으로 설정할 수 있는 작업에 대한 자세한 내용은 다음 멤버 함수를 참조하세요.
예시
// 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
이 COleCurrency
개체의 기본 CURRENCY 구조체입니다.
설명
주의
이 함수에서 CURRENCY
반환된 포인터에서 액세스하는 구조체의 값을 변경하면 이 개체의 값이 COleCurrency
변경됩니다. 이 COleCurrency
개체의 상태는 변경되지 않습니다.
자세한 내용은 Windows SDK의 CURRENCY 항목을 참조하세요.
COleCurrency::m_status
이 데이터 멤버의 형식은 클래스 내에서 COleCurrency
정의된 열거형 형식CurrencyStatus
입니다.
enum CurrencyStatus{
valid = 0,
invalid = 1,
null = 2,
};
설명
이러한 상태 값에 대한 간략한 설명은 다음 목록을 참조하세요.
COleCurrency::valid
이COleCurrency
개체가 유효하다는 것을 나타냅니다.COleCurrency::invalid
이COleCurrency
개체가 잘못되었음을 나타냅니다. 즉, 해당 값이 잘못되었을 수 있습니다.COleCurrency::null
이COleCurrency
개체가 null임을 나타냅니다. 즉, 이 개체에 대한 값이 제공되지 않았습니다. (C++ NULL과 달리 데이터베이스의 "값 없음"에서 "null"입니다.)
다음과 같은 경우 개체의 COleCurrency
상태가 잘못되었습니다.
값이 VARIANT 또는
COleVariant
통화 값으로 변환할 수 없는 값에서 설정된 경우이 개체가 산술 할당 작업 중에 오버플로 또는 언더플로가 발생한 경우(예
+=
*=:이 개체에 잘못된 값이 할당된 경우
SetStatus를 사용하여 이 개체의 상태가 명시적으로 유효하지 않은 것으로 설정된 경우
상태를 잘못된 것으로 설정할 수 있는 작업에 대한 자세한 내용은 다음 멤버 함수를 참조하세요.
주의
이 데이터 멤버는 고급 프로그래밍 상황에 적합합니다. 인라인 멤버 함수 GetStatus 및 SetStatus를 사용해야 합니다. 이 데이터 멤버를 명시적으로 설정하는 방법에 대한 추가 주의 사항은 참조 SetStatus
하세요.
COleCurrency::operator =
이러한 오버로드된 할당 연산자는 원본 통화 값을 이 COleCurrency
개체에 복사합니다.
const COleCurrency& operator=(CURRENCY cySrc);
const COleCurrency& operator=(const COleCurrency& curSrc);
const COleCurrency& operator=(const VARIANT& varSrc);
설명
각 연산자에 대한 간략한 설명은 다음과 같습니다.
operator =(
cySrc
) 값이CURRENCY
개체에COleCurrency
복사되고 해당 상태가 유효한 것으로 설정됩니다.operator =(
curSrc
) 피연산자의 값과 상태이며, 기존COleCurrency
개체는 이COleCurrency
개체에 복사됩니다.operator =( varSrc ) 값(또는 COleVariant 개체)을 통화(
VT_CY
)로 변환VARIANT
하는 데 성공하면 변환된 값이 이COleCurrency
개체에 복사되고 해당 상태가 유효한 것으로 설정됩니다. 변환에 실패하면 개체 값COleCurrency
이 0으로 설정되고 해당 상태가 유효하지 않습니다.
자세한 내용은 Windows SDK의 CURRENCY 및 VARIANT 항목을 참조하세요.
예시
// 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 +, -
이러한 연산자를 사용하면 두 COleCurrency
값을 서로 추가 및 빼고 값의 COleCurrency
기호를 변경할 수 있습니다.
COleCurrency operator+(const COleCurrency& cur) const;
COleCurrency operator-(const COleCurrency& cur) const;
COleCurrency operator-() const;
설명
피연산자 중 하나가 null이면 결과 COleCurrency
값의 상태가 null입니다.
산술 연산이 오버플로되면 결과 COleCurrency
값이 잘못되었습니다.
피연산자는 유효하지 않고 다른 피연산자는 null이 아니면 결과 COleCurrency
값의 상태가 유효하지 않습니다.
유효하고 유효하지 않으며 null 상태 값에 대한 자세한 내용은 m_status 멤버 변수를 참조하세요.
예시
// 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 +=, -=
이 COleCurrency
개체에서 값을 추가하고 뺄 COleCurrency
수 있습니다.
const COleCurrency& operator+=(const COleCurrency& cur);
const COleCurrency& operator-=(const COleCurrency& cur);
설명
피연산자 중 하나가 null이면 이 COleCurrency
개체의 상태가 null로 설정됩니다.
산술 연산이 오버플로되면 이 COleCurrency
개체의 상태가 유효하지 않은 상태로 설정됩니다.
피연산자 중 하나가 유효하지 않고 다른 피연산자가 null이 아니면 이 COleCurrency
개체의 상태가 유효하지 않은 상태로 설정됩니다.
유효하고 유효하지 않으며 null 상태 값에 대한 자세한 내용은 m_status 멤버 변수를 참조하세요.
예시
// 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 * 및 /
정수 값으로 COleCurrency
값을 조정할 수 있습니다.
COleCurrency operator*(long nOperand) const;
COleCurrency operator/(long nOperand) const;
설명
피연산자는 COleCurrency
null이면 결과 COleCurrency
값의 상태는 null입니다.
산술 연산이 오버플로되거나 언더플로되면 결과 COleCurrency
값의 상태가 유효하지 않습니다.
피연산자 COleCurrency
유효하지 않은 경우 결과 COleCurrency
값의 상태가 잘못되었습니다.
유효하고 유효하지 않으며 null 상태 값에 대한 자세한 내용은 m_status 멤버 변수를 참조하세요.
예시
// 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 *=, /=
이 COleCurrency
값을 정수 값으로 조정할 수 있습니다.
const COleCurrency& operator*=(long nOperand);
const COleCurrency& operator/=(long nOperand);
설명
피연산자가 COleCurrency
null이면 이 COleCurrency
개체의 상태가 null로 설정됩니다.
산술 연산이 오버플로되면 이 COleCurrency
개체의 상태가 유효하지 않은 상태로 설정됩니다.
피연산자가 COleCurrency
유효하지 않으면 이 COleCurrency
개체의 상태가 유효하지 않은 상태로 설정됩니다.
유효하고 유효하지 않으며 null 상태 값에 대한 자세한 내용은 m_status 멤버 변수를 참조하세요.
예시
// 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 >>
진단 덤프 및 보관에 저장을 지원합니다.
friend CDumpContext& operator<<(
CDumpContext& dc,
COleCurrency curSrc);
friend CArchive& operator<<(
CArchive& ar,
COleCurrency curSrc);
friend CArchive& operator>>(
CArchive& ar,
COleCurrency& curSrc);
설명
추출( >>) 연산자는 보관 파일에서 로드를 지원합니다.
COleCurrency::operator CURRENCY
CURRENCY
이 COleCurrency
개체에서 값이 복사되는 구조를 반환합니다.
operator CURRENCY() const;
설명
COleCurrency::P arseCurrency
이 멤버 함수를 호출하여 문자열을 구문 분석하여 통화 값을 읽습니다.
BOOL ParseCurrency(
LPCTSTR lpszCurrency,
DWORD dwFlags = 0,
LCID lcid = LANG_USER_DEFAULT);
throw(CMemoryException*);
throw(COleException*);
매개 변수
lpszCurrency
구문 분석할 null로 끝나는 문자열에 대한 포인터입니다.
dwFlags
로캘 설정에 대한 플래그를 나타내며, 다음과 같은 플래그일 수 있습니다.
- LOCALE_NOUSEROVERRIDE 사용자 지정 사용자 설정 대신 시스템 기본 로캘 설정을 사용합니다.
lcid
변환에 사용할 로캘 ID를 나타냅니다.
Return Value
문자열이 통화 값으로 변환된 경우 0이 아니고, 그렇지 않으면 0입니다.
설명
원본 문자열에서 숫자가 아닌 문자의 의미에 로컬 언어 사양(로캘 ID)을 사용합니다.
로캘 ID 값에 대한 자세한 내용은 여러 언어 지원을 참조 하세요.
문자열이 통화 값으로 변환된 경우 이 COleCurrency
개체의 값이 해당 값으로 설정되고 해당 상태가 유효합니다.
문자열을 통화 값으로 변환할 수 없거나 숫자 오버플로가 있는 경우 이 COleCurrency
개체의 상태가 잘못되었습니다.
메모리 할당 오류로 인해 문자열 변환에 실패한 경우 이 함수는 CMemoryException을 throw합니다. 다른 오류 상태에서 이 함수는 COleException을 throw합니다.
예시
// works if default locale has dot decimal point
COleCurrency cur;
cur.ParseCurrency(_T("$135.95"), 0);
ASSERT(cur == COleCurrency(135, 9500));
COleCurrency 관계형 연산자
두 통화 값을 비교하고 조건이 true이면 0이 아닌 값을 반환합니다. 그렇지 않으면 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;
설명
참고 항목
피연산자의 상태가 null이거나 잘못된 경우 순서 지정 작업의 반환 값( <, <=, >, >=)이 정의되지 않습니다. 같음 연산자( ==
, !=
)는 피연산자의 상태를 고려합니다.
예시
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
이 멤버 함수를 호출하여 이 COleCurrency
개체의 단위 및 소수 부분을 설정합니다.
void SetCurrency(
long nUnits,
long nFractionalUnits);
매개 변수
nUnits, nFractionalUnits 이 COleCurrency
개체에 복사할 값의 단위 및 소수 부분(1/10,000초)을 나타냅니다.
설명
소수 부분의 절대값이 10,000보다 크면 다음 예제의 세 번째와 같이 단위를 적절하게 조정합니다.
단위 및 소수 부분은 부가된 long 값으로 지정됩니다. 다음 예제의 네 번째 예제는 매개 변수에 다른 징후가 있을 때 발생하는 동작을 보여 줍니다.
예시
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
이 멤버 함수를 호출하여 이 COleCurrency
개체의 상태(유효성)를 설정합니다.
void SetStatus(CurrencyStatus status );
매개 변수
status
이 COleCurrency
개체의 새 상태입니다.
설명
상태 매개 변수 값은 클래스 내에서 정의된 열거형 형식으로 COleCurrency
정의 CurrencyStatus
됩니다.
enum CurrencyStatus {
valid = 0,
invalid = 1,
null = 2
};
이러한 상태 값에 대한 간략한 설명은 다음 목록을 참조하세요.
COleCurrency::valid
이COleCurrency
개체가 유효하다는 것을 나타냅니다.COleCurrency::invalid
이COleCurrency
개체가 잘못되었음을 나타냅니다. 즉, 해당 값이 잘못되었을 수 있습니다.COleCurrency::null
이COleCurrency
개체가 null임을 나타냅니다. 즉, 이 개체에 대한 값이 제공되지 않았습니다. (C++ NULL과 달리 데이터베이스의 "값 없음"에서 "null"입니다.)
주의
이 함수는 고급 프로그래밍 상황에 적합합니다. 이 함수는 이 개체의 데이터를 변경하지 않습니다. 상태를 null 또는 유효하지 않은 상태로 설정하는 데 가장 자주 사용됩니다. 대입 연산자( 연산자 =) 및 SetCurrency 는 원본 값에 따라 개체의 상태를 설정합니다.