Share via


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.

Valor Significado
VARIANT_NOVALUEPROP
Impide que la función intente convertir un objeto en un tipo fundamental obteniendo la propiedad Value. Las aplicaciones solo deben establecer esta marca si es necesario, ya que hace que su comportamiento sea incoherente con otras aplicaciones.
VARIANT_ALPHABOOL
Convierte un valor de VT_BOOL en una cadena que contenga "True" o "False".
VARIANT_NOUSEROVERRIDE
Para las conversiones a o desde VT_BSTR, pasa LOCALE_NOUSEROVERRIDE a las rutinas de coerción principales.
VARIANT_LOCALBOOL
Para las conversiones de VT_BOOL a VT_BSTR y atrás, usa el idioma especificado por la configuración regional en uso en el equipo local.

[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
S_OK
Correcto.
DISP_E_BADVARTYPE
El tipo de variante no es un tipo válido de variante.
DISP_E_OVERFLOW
Los datos a los que apunta pvarSrc no caben en el tipo de destino.
DISP_E_TYPEMISMATCH
No se pudo coercar el argumento al tipo especificado.
E_INVALIDARG
Uno de los argumentos no es válido.
E_OUTOFMEMORY
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.

Nota El tipo de variantARG no debe cambiarse en la matriz rgvarg en su lugar.
 

Requisitos

   
Plataforma de destino Windows
Encabezado oleauto.h
Library OleAut32.lib
Archivo DLL OleAut32.dll

Consulte también

Funciones de manipulación de variantes

VariantChangeType