Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Encapsula o CURRENCY tipo de dados da automação OLE.
Sintaxe
class COleCurrency
Membros
Construtores Públicos
| Nome | Descrição |
|---|---|
| COleCurrency::COleCurrency | Constrói um objeto COleCurrency. |
Métodos Públicos
| Nome | Descrição |
|---|---|
| COleCurrency::Formato | Gera uma representação formatada de cadeia de caracteres de um COleCurrency objeto. |
| COleCurrency::GetStatus | Obtém o status (validade) deste COleCurrency objeto. |
| COleCurrency::P arseCurrency | Lê um valor CURRENCY de uma cadeia de caracteres e define o valor de COleCurrency. |
| COleCurrency::SetCurrency | Define o valor deste COleCurrency objeto. |
| COleCurrency::SetStatus | Define o status (validade) para este COleCurrency objeto. |
Operadores Públicos
| Nome | Descrição |
|---|---|
| operador = | Copia um COleCurrency valor. |
| operador +, - | Adiciona, subtrai e altera o sinal de COleCurrency valores. |
| operador +=, -= | Adiciona e subtrai um COleCurrency valor deste COleCurrency objeto. |
| operador */ | Dimensiona um COleCurrency valor por um valor inteiro. |
| operador *=, /= | Dimensiona esse COleCurrency valor por um valor inteiro. |
| Operador << | Produz um COleCurrency valor para CArchive ou CDumpContext. |
| Operador >> | Introduz um COleCurrency objeto de CArchive. |
| operador MOEDA | Converte um COleCurrency valor em uma MOEDA. |
| operador ==, <, <=, etc. | Compara dois COleCurrency valores. |
Membros de Dados Públicos
| Nome | Descrição |
|---|---|
| COleCurrency::m_cur | Contém a MOEDA subjacente para este COleCurrency objeto. |
| COleCurrency::m_status | Contém o status deste COleCurrency objeto. |
Observações
COleCurrency não tem uma classe base.
CURRENCY é implementado como um valor inteiro de 8 bytes, dois complementos, dimensionado por 10.000. Isto dá um número de ponto fixo com 15 dígitos à esquerda da vírgula decimal e 4 dígitos à direita. O tipo de dados CURRENCY é extremamente útil para cálculos envolvendo dinheiro, ou para qualquer cálculo de ponto fixo onde a precisão é importante. É um dos tipos possíveis para o VARIANT tipo de dados de automação OLE.
COleCurrency também implementa algumas operações aritméticas básicas para este tipo de ponto fixo. As operações suportadas foram selecionadas para controlar os erros de arredondamento que ocorrem durante os cálculos de ponto fixo.
Hierarquia de herança
COleCurrency
Requerimentos
Cabeçalho: afxdisp.h
COleCurrency::COleCurrency
Constrói um objeto COleCurrency.
COleCurrency();
COleCurrency(CURRENCY cySrc);
COleCurrency(const COleCurrency& curSrc);
COleCurrency(const VARIANT& varSrc);
COleCurrency(
long nUnits,
long nFractionalUnits);
Parâmetros
cySrc
Um valor CURRENCY a ser copiado para o novo COleCurrency objeto.
curSrc
Um objeto existente COleCurrency a ser copiado para o novo COleCurrency objeto.
varSrc
Uma estrutura de dados existente VARIANT (possivelmente um COleVariant objeto) a ser convertida em um valor de moeda (VT_CY) e copiada para o novo COleCurrency objeto.
nUnits, nFractionalUnits Indicam as unidades e a parte fracionária (em 1/10.000) do valor a ser copiado para o novo COleCurrency objeto.
Observações
Todos esses construtores criam novos COleCurrency objetos inicializados para o valor especificado. Segue-se uma breve descrição de cada um destes construtores. Salvo indicação em contrário, o estado do novo COleCurrency item é definido como válido.
COleCurrency() Constrói um
COleCurrencyobjeto inicializado como 0 (zero).COleCurrency(
cySrc) Constrói umCOleCurrencyobjeto a partir de um valor CURRENCY .COleCurrency(
curSrc) Constrói umCOleCurrencyobjeto a partir de um objeto existenteCOleCurrency. O novo objeto tem o mesmo status que o objeto de origem.COleCurrency(
varSrc) Constrói umCOleCurrencyobjeto. Tenta converter uma estruturaCOleVariantem um valor de moeda (VT_CY). Se essa conversão for bem-sucedida, o valor convertido será copiado para o novoCOleCurrencyobjeto. Se não for, o valor doCOleCurrencyobjeto é definido como zero (0) e seu status como inválido.COleCurrency(
nUnits,nFractionalUnits) Constrói umCOleCurrencyobjeto a partir dos componentes numéricos especificados. Se o valor absoluto da fração for superior a 10 000, procede-se ao ajustamento adequado das unidades. Observe que as unidades e a parte fracionária são especificadas por valores longos assinados.
Para obter mais informações, consulte as entradas CURRENCY e VARIANT no SDK do Windows.
Exemplo
Os exemplos a seguir mostram os efeitos dos construtores zero-parameter e two-parameter:
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::Formato
Chame essa função de membro para criar uma representação formatada do valor da moeda.
CString Format(DWORD dwFlags = 0, LCID lcid = LANG_USER_DEFAULT) const;
Parâmetros
dwBandeiras
Indica sinalizadores para configurações de localidade. Apenas a seguinte bandeira é relevante para a moeda:
- LOCALE_NOUSEROVERRIDE Use as configurações de localidade padrão do sistema, em vez de configurações de usuário personalizadas.
LCID
Indica o ID de localidade a ser usado para a conversão.
Valor de retorno
A CString que contém o valor da moeda formatada.
Observações
Ele formata o valor usando as especificações do idioma local (IDs de localidade). Um símbolo de moeda não está incluído no valor retornado. Se o status desse COleCurrency objeto for null, o valor de retorno será uma cadeia de caracteres vazia. Se o status for inválido, a cadeia de caracteres de retorno será especificada pelo recurso de cadeia de caracteres IDS_INVALID_CURRENCY.
Exemplo
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
Chame essa função de membro para obter o status (validade) de um determinado COleCurrency objeto.
CurrencyStatus GetStatus() const;
Valor de retorno
Devolve o estado deste COleCurrency valor.
Observações
O valor de retorno é definido pelo tipo enumerado CurrencyStatus que é definido dentro da COleCurrency classe.
enum CurrencyStatus {
valid = 0,
invalid = 1,
null = 2
};
Para obter uma breve descrição desses valores de status, consulte a seguinte lista:
COleCurrency::validIndica que esteCOleCurrencyobjeto é válido.COleCurrency::invalidIndica que esseCOleCurrencyobjeto é inválido, ou seja, seu valor pode estar incorreto.COleCurrency::nullIndica que esseCOleCurrencyobjeto é null, ou seja, que nenhum valor foi fornecido para esse objeto. (Isso é "null" no sentido de banco de dados de "não ter valor", em oposição ao C++ NULL.)
O status de um COleCurrency objeto é inválido nos seguintes casos:
Se o seu valor for definido a partir de uma VARIANTE ou
COleVariantvalor que não pôde ser convertido para um valor de moeda.Se este objeto tiver sofrido um estouro ou subfluxo durante uma operação de atribuição aritmética, por exemplo
+=ou *=.Se um valor inválido foi atribuído a este objeto.
Se o status deste objeto foi explicitamente definido como inválido usando SetStatus.
Para obter mais informações sobre operações que podem definir o status como inválido, consulte as seguintes funções de membro:
Exemplo
// 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
A estrutura CURRENCY subjacente para este COleCurrency objeto.
Observações
Atenção
Alterar o CURRENCY valor na estrutura acessada pelo ponteiro retornado por esta função alterará o valor deste COleCurrency objeto. Ele não altera o status deste COleCurrency objeto.
Para obter mais informações, consulte a entrada CURRENCY no SDK do Windows.
COleCurrency::m_status
O tipo desse membro de dados é o tipo CurrencyStatusenumerado , que é definido dentro da COleCurrency classe.
enum CurrencyStatus{
valid = 0,
invalid = 1,
null = 2,
};
Observações
Para obter uma breve descrição desses valores de status, consulte a seguinte lista:
COleCurrency::validIndica que esteCOleCurrencyobjeto é válido.COleCurrency::invalidIndica que esseCOleCurrencyobjeto é inválido, ou seja, seu valor pode estar incorreto.COleCurrency::nullIndica que esseCOleCurrencyobjeto é null, ou seja, que nenhum valor foi fornecido para esse objeto. (Isso é "null" no sentido de banco de dados de "não ter valor", em oposição ao C++ NULL.)
O status de um COleCurrency objeto é inválido nos seguintes casos:
Se o seu valor for definido a partir de uma VARIANTE ou
COleVariantvalor que não pôde ser convertido para um valor de moeda.Se este objeto tiver sofrido um estouro ou subfluxo durante uma operação de atribuição aritmética, por exemplo
+=ou *=.Se um valor inválido foi atribuído a este objeto.
Se o status deste objeto foi explicitamente definido como inválido usando SetStatus.
Para obter mais informações sobre operações que podem definir o status como inválido, consulte as seguintes funções de membro:
Atenção
Este membro de dados é para situações avançadas de programação. Você deve usar as funções de membro embutido GetStatus e SetStatus. Consulte SetStatus para obter mais precauções em relação à configuração explícita desse membro de dados.
COleCurrency::operador =
Esses operadores de atribuição sobrecarregados copiam o valor da moeda de origem para este COleCurrency objeto.
const COleCurrency& operator=(CURRENCY cySrc);
const COleCurrency& operator=(const COleCurrency& curSrc);
const COleCurrency& operator=(const VARIANT& varSrc);
Observações
Segue-se uma breve descrição de cada operador:
operator =(
cySrc) OCURRENCYvalor é copiado para oCOleCurrencyobjeto e seu status é definido como válido.operator =(
curSrc) O valor e o status do operando, um objeto existenteCOleCurrencysão copiados para esteCOleCurrencyobjeto.operador =(varSrc) Se a
VARIANTconversão do valor (ou objeto COleVariant ) em uma moeda (VT_CY) for bem-sucedida, o valor convertido será copiado para esseCOleCurrencyobjeto e seu status será definido como válido. Se a conversão não for bem-sucedida, oCOleCurrencyvalor do objeto será definido como 0 e seu status como inválido.
Para obter mais informações, consulte as entradas CURRENCY e VARIANT no SDK do Windows.
Exemplo
// 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::operador +, -
Esses operadores permitem adicionar e subtrair dois COleCurrency valores um para o outro e alterar o sinal de um COleCurrency valor.
COleCurrency operator+(const COleCurrency& cur) const;
COleCurrency operator-(const COleCurrency& cur) const;
COleCurrency operator-() const;
Observações
Se qualquer um dos operandos for null, o status do valor resultante COleCurrency será null.
Se a operação aritmética estourar, o valor resultante COleCurrency será inválido.
Se o operando for inválido e o outro não for nulo, o status do valor resultante COleCurrency será inválido.
Para obter mais informações sobre os valores de status válido, inválido e nulo, consulte a variável membro m_status .
Exemplo
// 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::operador +=, -=
Permitir que você adicione e subtraia um COleCurrency valor de e para este COleCurrency objeto.
const COleCurrency& operator+=(const COleCurrency& cur);
const COleCurrency& operator-=(const COleCurrency& cur);
Observações
Se um dos operandos for null, o status deste COleCurrency objeto será definido como null.
Se a operação aritmética estourar, o status deste COleCurrency objeto será definido como inválido.
Se um dos operandos for inválido e o outro não for nulo, o status deste COleCurrency objeto será definido como inválido.
Para obter mais informações sobre os valores de status válido, inválido e nulo, consulte a variável membro m_status .
Exemplo
// 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::operador * e /
Permite dimensionar um COleCurrency valor por um valor integral.
COleCurrency operator*(long nOperand) const;
COleCurrency operator/(long nOperand) const;
Observações
Se o COleCurrency operando for null, o status do valor resultante COleCurrency será null.
Se a operação aritmética estourar ou subfluir, o status do valor resultante COleCurrency será inválido.
Se o COleCurrency operando for inválido, o status do valor resultante COleCurrency será inválido.
Para obter mais informações sobre os valores de status válido, inválido e nulo, consulte a variável membro m_status .
Exemplo
// 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::operador *=, /=
Permitir que você dimensione esse COleCurrency valor por um valor integral.
const COleCurrency& operator*=(long nOperand);
const COleCurrency& operator/=(long nOperand);
Observações
Se o COleCurrency operando for null, o status deste COleCurrency objeto será definido como null.
Se a operação aritmética estourar, o status deste COleCurrency objeto será definido como inválido.
Se o COleCurrency operando for inválido, o status deste COleCurrency objeto será definido como inválido.
Para obter mais informações sobre os valores de status válido, inválido e nulo, consulte a variável membro m_status .
Exemplo
// 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 >>
Suporta despejo de diagnóstico e armazenamento em um arquivo.
friend CDumpContext& operator<<(
CDumpContext& dc,
COleCurrency curSrc);
friend CArchive& operator<<(
CArchive& ar,
COleCurrency curSrc);
friend CArchive& operator>>(
CArchive& ar,
COleCurrency& curSrc);
Observações
O operador de extração ( >>) suporta o carregamento de um arquivo.
COleCurrency::operador MOEDA
Retorna uma CURRENCY estrutura cujo valor é copiado deste COleCurrency objeto.
operator CURRENCY() const;
Observações
COleCurrency::P arseCurrency
Chame essa função de membro para analisar uma cadeia de caracteres para ler um valor de moeda.
BOOL ParseCurrency(
LPCTSTR lpszCurrency,
DWORD dwFlags = 0,
LCID lcid = LANG_USER_DEFAULT);
throw(CMemoryException*);
throw(COleException*);
Parâmetros
lpszMoeda
Um ponteiro para a cadeia de caracteres terminada em nulo que deve ser analisada.
dwBandeiras
Indica sinalizadores para configurações de localidade, possivelmente o seguinte sinalizador:
- LOCALE_NOUSEROVERRIDE Use as configurações de localidade padrão do sistema, em vez de configurações de usuário personalizadas.
LCID
Indica o ID de localidade a ser usado para a conversão.
Valor de retorno
Diferente de zero se a cadeia de caracteres foi convertida com êxito em um valor de moeda, caso contrário, 0.
Observações
Ele usa especificações de idioma local (IDs de localidade) para o significado de caracteres não numéricos na cadeia de caracteres de origem.
Para obter uma discussão sobre valores de ID de localidade, consulte Suporte a vários idiomas.
Se a cadeia de caracteres foi convertida com êxito em um valor de moeda, o valor desse COleCurrency objeto é definido como esse valor e seu status como válido.
Se a cadeia de caracteres não puder ser convertida em um valor de moeda ou se houver um estouro numérico, o status desse COleCurrency objeto será inválido.
Se a conversão de cadeia de caracteres falhou devido a erros de alocação de memória, esta função lança um CMemoryException. Em qualquer outro estado de erro, essa função lança um COleException.
Exemplo
// works if default locale has dot decimal point
COleCurrency cur;
cur.ParseCurrency(_T("$135.95"), 0);
ASSERT(cur == COleCurrency(135, 9500));
Operadores relacionais COleCurrency
Compare dois valores de moeda e retorne diferente de zero se a condição for verdadeira; caso contrário, 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;
Observações
Observação
O valor de retorno das operações de ordenação ( <, <=, >,> =) será indefinido se o status de qualquer operando for nulo ou inválido. Os operadores de igualdade (==, !=) consideram o status dos operandos.
Exemplo
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
Chame essa função de membro para definir as unidades e a parte fracionária desse COleCurrency objeto.
void SetCurrency(
long nUnits,
long nFractionalUnits);
Parâmetros
nUnits, nFractionalUnits Indicam as unidades e a parte fracionária (em 1/10.000) do valor a ser copiado para este COleCurrency objeto.
Observações
Se o valor absoluto da parte fracionária for superior a 10.000, o ajuste adequado é feito nas unidades, como mostrado no terceiro dos exemplos a seguir.
Observe que as unidades e a parte fracionária são especificadas por valores longos assinados. O quarto dos exemplos a seguir mostra o que acontece quando os parâmetros têm sinais diferentes.
Exemplo
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
Chame essa função de membro para definir o status (validade) desse COleCurrency objeto.
void SetStatus(CurrencyStatus status );
Parâmetros
Situação
O novo status para este COleCurrency objeto.
Observações
O valor do parâmetro CurrencyStatus é definido pelo tipo enumerado, que é definido dentro da COleCurrency classe.
enum CurrencyStatus {
valid = 0,
invalid = 1,
null = 2
};
Para obter uma breve descrição desses valores de status, consulte a seguinte lista:
COleCurrency::validIndica que esteCOleCurrencyobjeto é válido.COleCurrency::invalidIndica que esseCOleCurrencyobjeto é inválido, ou seja, seu valor pode estar incorreto.COleCurrency::nullIndica que esseCOleCurrencyobjeto é null, ou seja, que nenhum valor foi fornecido para esse objeto. (Isso é "null" no sentido de banco de dados de "não ter valor", em oposição ao C++ NULL.)
Atenção
Esta função é para situações de programação avançada. Esta função não altera os dados neste objeto. Na maioria das vezes, ele será usado para definir o status como nulo ou inválido. Observe que o operador de atribuição ( operator =) e SetCurrency definem o status do objeto com base no(s) valor(es) de origem.