Funzione VariantChangeTypeEx (oleauto.h)
Importante
Questa API è interessata dal problema descritto in supporto tecnico Microsoft argomento VarI8FromCy produce un valore non corretto quando il valore CY è molto grande.
Converte una variante da un tipo a un altro, utilizzando un LCID.
Sintassi
HRESULT VariantChangeTypeEx(
[out] VARIANTARG *pvargDest,
[in] const VARIANTARG *pvarSrc,
[in] LCID lcid,
[in] USHORT wFlags,
[in] VARTYPE vt
);
Parametri
[out] pvargDest
Variante di destinazione. Se si tratta dello stesso valore di pvarSrc, la variante verrà convertita sul posto.
[in] pvarSrc
Variante da convertire.
[in] lcid
Identificatore delle impostazioni locali. LCID è utile quando il tipo di variantARG di origine o di destinazione è VT_BSTR, VT_DISPATCH o VT_DATE.
[in] wFlags
Bandiere.
[in] vt
Tipo in cui eseguire la conversione. Se il codice restituito è S_OK, il campo vt di *pvargDest è garantito che sia uguale a questo valore.
Valore restituito
Questa funzione può restituire uno di questi valori.
Codice restituito | Descrizione |
---|---|
|
Operazione completata. |
|
Il tipo variant non è un tipo valido di variant. |
|
I dati a cui punta pvarSrc non rientrano nel tipo di destinazione. |
|
Impossibile forzare l'argomento al tipo specificato. |
|
Uno degli argomenti non è valido. |
|
Memoria insufficiente per completare l'operazione. |
Commenti
La funzione VariantChangeTypeEx gestisce le coercizioni tra i tipi fondamentali (incluse le coercizioni da numerica a stringa e da stringa a numerica). Una variante con VT_BYREF set viene forzata su un valore ottenendo il valore a cui si fa riferimento. Un oggetto viene assegnato a un valore richiamando la proprietà Value dell'oggetto (DISPID_VALUE).
In genere, l'implementatore di IDispatch::Invoke determina il membro a cui si accede e quindi chiama VariantChangeType per ottenere il valore di uno o più argomenti. Ad esempio, se la chiamata IDispatch specifica un membro SetTitle che accetta un argomento stringa, l'implementatore chiamerà VariantChangeTypeEx per tentare di forzare l'argomento per VT_BSTR.
Se VariantChangeTypeEx non restituisce un errore, è possibile ottenere l'argomento direttamente dal campo bstrVal di VARIANTARG. Se VariantChangeTypeEx restituisce DISP_E_TYPEMISMATCH, l'implementatore imposta *puArgErr su 0 (che indica l'argomento in errore) e restituisce DISP_E_TYPEMISMATCH da IDispatch::Invoke.
Le matrici di un tipo non possono essere convertite in matrici di un altro tipo con questa funzione.
Requisiti
Piattaforma di destinazione | Windows |
Intestazione | oleauto.h |
Libreria | OleAut32.lib |
DLL | OleAut32.dll |