Función VariantChangeType (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.
Sintaxis
HRESULT VariantChangeType(
[out] VARIANTARG *pvargDest,
[in] const VARIANTARG *pvarSrc,
[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] 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 convertir el argumento en el tipo especificado. |
|
Uno de los argumentos no es válido. |
|
Memoria insuficiente para completar la operación. |
Comentarios
La función VariantChangeType controla las coerciones entre los tipos fundamentales (incluidas las coerciones numéricas a cadena y de cadena a numérica). El argumento pvarSrc se cambia durante el proceso de conversión. Por ejemplo, si la variante de origen es de tipo VT_BOOL y el destino es de tipo VT_UINT, el argumento pvarSrc se convierte primero en VT_I2 y, a continuación, la conversión continúa. Una variante que tiene VT_BYREF establecido se convierte 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 VariantChangeType para intentar convertir el argumento en VT_BSTR. Si VariantChangeType no devuelve un error, el argumento se podría obtener directamente del campo bstrVal del VARIANTARG. Si VariantChangeType 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 Invoke.
Las matrices de un tipo no se pueden convertir en matrices de otro tipo con esta función.
Requisitos
Requisito | Value |
---|---|
Plataforma de destino | Windows |
Encabezado | oleauto.h |
Library | OleAut32.lib |
Archivo DLL | OleAut32.dll |