Función VariantChangeTypeEx (oleauto.h)
Importante
Esta API se ve afectada por el problema descrito en Soporte técnico de Microsoft tema VarI8FromCy genera un valor incorrecto cuando el valor cy es muy grande.
Convierte una variante de un tipo a otro mediante un LCID.
Sintaxis
HRESULT VariantChangeTypeEx(
[out] VARIANTARG *pvargDest,
[in] const VARIANTARG *pvarSrc,
[in] LCID lcid,
[in] USHORT wFlags,
[in] VARTYPE vt
);
Parámetros
[out] pvargDest
Variante de destino. Si es lo mismo que pvarSrc, la variante se convertirá en su lugar.
[in] pvarSrc
Variante que se va a convertir.
[in] lcid
El identificador de configuración regional. El LCID es útil cuando el tipo de variantARG de origen o destino es VT_BSTR, VT_DISPATCH o VT_DATE.
[in] wFlags
Banderas.
[in] vt
Tipo al que se va a convertir. Si el código devuelto es S_OK, se garantiza que el campo vt del *pvargDest sea igual a este valor.
Valor devuelto
Esta función puede devolver uno de estos valores.
Código devuelto | Descripción |
---|---|
|
Correcto. |
|
El tipo de variante no es un tipo válido de variante. |
|
Los datos a los que apunta pvarSrc no caben en el tipo de destino. |
|
No se pudo coercar el argumento al tipo especificado. |
|
Uno de los argumentos no es válido. |
|
Memoria insuficiente para completar la operación. |
Comentarios
La función VariantChangeTypeEx controla las coerciones entre los tipos fundamentales (incluidas las coerciones numéricas a cadena y de cadena a numérica). Una variante que tiene VT_BYREF set se coercciona en un valor obteniendo el valor al que se hace referencia. Un objeto se convierte en un valor invocando la propiedad Value del objeto (DISPID_VALUE).
Normalmente, el implementador de IDispatch::Invoke determina a qué miembro se accede y, a continuación, llama a VariantChangeType para obtener el valor de uno o varios argumentos. Por ejemplo, si la llamada A IDispatch especifica un miembro SetTitle que toma un argumento de cadena, el implementador llamaría a VariantChangeTypeEx para intentar convertir el argumento en VT_BSTR.
Si VariantChangeTypeEx no devuelve un error, el argumento se podría obtener directamente del campo bstrVal del VARIANTARG. Si VariantChangeTypeEx devuelve DISP_E_TYPEMISMATCH, el implementador establecería *puArgErr en 0 (lo que indica el argumento en error) y devolvería DISP_E_TYPEMISMATCH de IDispatch::Invoke.
Las matrices de un tipo no se pueden convertir en matrices de otro tipo con esta función.
Requisitos
Plataforma de destino | Windows |
Encabezado | oleauto.h |
Library | OleAut32.lib |
Archivo DLL | OleAut32.dll |