Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Wichtig
Diese API ist von dem problem betroffen, das in Microsoft-Support Thema VarI8FromCy beschrieben wird, erzeugt einen falschen Wert, wenn der CY-Wert sehr groß ist.
Konvertiert eine Variante von einem Typ in einen anderen.
Syntax
HRESULT VariantChangeType(
[out] VARIANTARG *pvargDest,
[in] const VARIANTARG *pvarSrc,
[in] USHORT wFlags,
[in] VARTYPE vt
);
Parameter
[out] pvargDest
Die Zielvariante. Wenn dies mit pvarSrc identisch ist, wird die Variante an Ort und Stelle konvertiert.
[in] pvarSrc
Die zu konvertierende Variante.
[in] wFlags
Flaggen.
[in] vt
Der Typ, in den konvertiert werden soll. Wenn der Rückgabecode S_OK ist, ist das vt-Feld des *pvargDest garantiert gleich diesem Wert.
Rückgabewert
Diese Funktion kann einen dieser Werte zurückgeben.
| Rückgabecode | BESCHREIBUNG |
|---|---|
|
Erfolg. |
|
Der Variantentyp ist kein gültiger Variantentyp. |
|
Die daten, auf die von pvarSrc verwiesen wird, passen nicht in den Zieltyp. |
|
Das Argument konnte nicht an den angegebenen Typ geerct werden. |
|
Eines der Argumente ist ungültig. |
|
Unzureichender Arbeitsspeicher, um den Vorgang abzuschließen. |
Hinweise
Die VariantChangeType-Funktion verarbeitet Coercions zwischen den grundlegenden Typen (einschließlich numerischer zu Zeichenfolge und Zeichenfolgen-zu-numerischer Koercionen). Das pvarSrc-Argument wird während des Konvertierungsprozesses geändert. Wenn die Quellvariante beispielsweise vom Typ VT_BOOL und das Ziel vom Typ VT_UINT ist, wird das pvarSrc-Argument zuerst in VT_I2 konvertiert, und dann wird die Konvertierung fortgesetzt. Eine Variante, die VT_BYREF festgelegt hat, wird durch Abrufen des referenzierten Werts zu einem Wert geerct. Ein -Objekt wird durch Aufrufen der Value-Eigenschaft des Objekts (DISPID_VALUE) zu einem Wert zwangsvermittelt.
In der Regel bestimmt der Implementierer von IDispatch::Invoke , auf welches Element zugegriffen wird, und ruft dann VariantChangeType auf, um den Wert eines oder mehrerer Argumente abzurufen. Wenn der IDispatch-Aufruf beispielsweise ein SetTitle-Element angibt, das ein Zeichenfolgenargument akzeptiert, ruft der Implementierer VariantChangeType auf, um zu versuchen, das Argument zu VT_BSTR. Wenn VariantChangeType keinen Fehler zurückgibt, kann das Argument direkt aus dem Feld bstrVal des VARIANTARG abgerufen werden. Wenn VariantChangeType DISP_E_TYPEMISMATCH zurückgibt, würde der Implementierer *puArgErr auf 0 festlegen (was das Argument als Fehler angibt) und DISP_E_TYPEMISMATCH von Invoke zurückgeben.
Arrays eines Typs können mit dieser Funktion nicht in Arrays eines anderen Typs konvertiert werden.
Anforderungen
| Anforderung | Wert |
|---|---|
| Zielplattform | Windows |
| Kopfzeile | oleauto.h |
| Bibliothek | OleAut32.lib |
| DLL | OleAut32.dll |