VariantChangeTypeEx
9/8/2008
Essa função converte uma variante de um tipo para outro, usando um LCID.
Syntax
HRESULT VariantChangeTypeEx(
VARIANTARG FAR* pvargDest,
VARIANTARG FAR* pvarSrc,
LCID lcid,
unsigned short wFlags,
VARTYPE vt
);
Parameters
pvargDest
[out] Ponteiro para o VARIANTARG Para receber o tipo coagido.Se esse for o mesmo pvarSrc, a variante é convertido em local.
- pvarSrc
[no] Ponteiro para a origem VARIANTARG para ser forçados.
LCID
[no] LCID para a variante para coagir.O LCID é útil quando o tipo da origem ou destino VARIANTARG VT_BSTR, VT_DISPATCH ou VT_DATE.
wFlags
[no] Sinaliza que controle a coercion.O sinalizador Definição somente é VARIANT_NOVALUEPROP, o que impede a função tentando coagir um objeto para um tipo fundamental por obter sua propriedade de valor.
Aplicativos Defina esse sinalizador somente se necessário, pois ele torna seu comportamento inconsistente com outros aplicativos.
VT
[no] Especifica o tipo para coagir para.Se o código de retorno é S_OK, o VT membro do VARIANTARG especificado por *pvargDest são garantidas para ser igual para este valor.
Return Value
Retorna os valores HRESULT mostrados a seguinte tabela.
Valor | Descrição |
---|---|
S_OK |
O sucesso. |
DISP_E_BADVARTYPE |
A variante tipo VT não é um válido tipo de variante. |
DISP_E_OVERFLOW |
Os dados apontados pelo pvarSrc não é adequado no tipo de destino. |
DISP_E_TYPEMISMATCH |
O argumento não pôde ser forçado para o tipo especificado. |
E_INVALIDARG |
Um argumento é inválido. |
E_OUTOFMEMORY |
Não foi possível alocar memória para a conversão. |
Remarks
Passagem inválido (e, em algumas circunstâncias NULL) ponteiros para essa função faz com que uma terminação inesperada do aplicativo.
O VariantChangeTypeEx função manipula coercions entre os tipos fundamentais (incluindo numérico - para - seqüência de caracteres e coercions seqüência-para-numérico).
A alteração um tipo com o sinalizador VT_BYREF definido como um sem VT_BYREF, alteração de relacionado valueto VariantChangeTypeEx.
Para objetos coagir para tipos fundamentais, obtenha o valor da Valor propriedade.
Normalmente, o implementador de IDispatch::Invoke Determina qual membro está sendo acessado e, em seguida, chama VariantChangeTypePara o valor de um ou mais argumentos get.
De exemplo, se a IDispatch chamar especifica um SetTitle membro que leva um argumento string, o implementor poderia chamar VariantChangeTypeEx Para tentar coagir o argumento para VT_BSTR.
Se VariantChangeTypeEx não retornar um erro, o argumento, em seguida, poderia ser obtido diretamente das bstrVal membro das VARIANTARG.
Se VariantChangeTypeEx Retorna DISP_E_TYPEMISMATCH, o implementor definiria *puArgErr para 0 (indicando o argumento em erro) e retornar DISP_E_TYPEMISMATCH de IDispatch::Invoke.
Matrizes de um tipo não podem ser convertidos para matrizes de outro tipo com essa função.
O tipo de um VARIANTARG Não deve ser alterado na rgvarg matriz no local.
Requirements
Header | oleauto.h |
Library | oleaut32.lib |
Windows Embedded CE | Windows CE 2.0 and later |
Windows Mobile | Windows Mobile Version 5.0 and later |
See Also
Reference
Automation Functions
LCID
VARIANT and VARIANTARG
IDispatch::Invoke
VariantChangeType
IDispatch