Função VariantChangeTypeEx (oleauto.h)
Importante
Essa API é afetada pelo problema descrito em Suporte da Microsoft tópico VarI8FromCy produz um valor incorreto quando o valor CY é muito grande.
Converte uma variante de um tipo para outro, usando um LCID.
Sintaxe
HRESULT VariantChangeTypeEx(
[out] VARIANTARG *pvargDest,
[in] const VARIANTARG *pvarSrc,
[in] LCID lcid,
[in] USHORT wFlags,
[in] VARTYPE vt
);
Parâmetros
[out] pvargDest
A variante de destino. Se for o mesmo que pvarSrc, a variante será convertida no local.
[in] pvarSrc
A variante a ser convertida.
[in] lcid
O identificador de localidade. O LCID é útil quando o tipo do VARIANTARG de origem ou destino é VT_BSTR, VT_DISPATCH ou VT_DATE.
[in] wFlags
Sinalizadores.
[in] vt
O tipo para o qual converter. Se o código de retorno for S_OK, o campo vt do *pvargDest será garantido como igual a esse valor.
Valor retornado
Essa função pode retornar um desses valores.
Código de retorno | Descrição |
---|---|
|
Êxito. |
|
O tipo variante não é um tipo válido de variante. |
|
Os dados apontados por pvarSrc não se encaixam no tipo de destino. |
|
O argumento não pôde ser coagido para o tipo especificado. |
|
Um dos argumentos não é válido. |
|
Memória insuficiente para concluir a operação. |
Comentários
A função VariantChangeTypeEx lida com coerções entre os tipos fundamentais (incluindo coerções numéricas para cadeias de caracteres e cadeia de caracteres para numéricas). Uma variante que tem VT_BYREF conjunto é coagida a um valor obtendo o valor referenciado. Um objeto é coagido a um valor invocando a propriedade Value do objeto (DISPID_VALUE).
Normalmente, o implementador de IDispatch::Invoke determina qual membro está sendo acessado e, em seguida, chama VariantChangeType para obter o valor de um ou mais argumentos. Por exemplo, se a chamada IDispatch especificar um membro SetTitle que usa um argumento de cadeia de caracteres, o implementador chamará VariantChangeTypeEx para tentar forçar o argumento a VT_BSTR.
Se VariantChangeTypeEx não retornar um erro, o argumento poderá ser obtido diretamente do campo bstrVal do VARIANTARG. Se VariantChangeTypeEx retornar DISP_E_TYPEMISMATCH, o implementador definirá *puArgErr como 0 (indicando o argumento em erro) e retornará DISP_E_TYPEMISMATCH de IDispatch::Invoke.
Matrizes de um tipo não podem ser convertidas em matrizes de outro tipo com essa função.
Requisitos
Plataforma de Destino | Windows |
Cabeçalho | oleauto.h |
Biblioteca | OleAut32.lib |
DLL | OleAut32.dll |