VariantChangeTypeEx 函式 (oleauto.h)
重要
當 CY 值非常大時,此 API 會受到Microsoft 支援服務主題VarI8FromCy 所描述的問題所影響。
使用 LCID,將變體從某個類型轉換為另一個類型。
語法
HRESULT VariantChangeTypeEx(
[out] VARIANTARG *pvargDest,
[in] const VARIANTARG *pvarSrc,
[in] LCID lcid,
[in] USHORT wFlags,
[in] VARTYPE vt
);
參數
[out] pvargDest
目的變數。 如果這與 pvarSrc相同,則會就地轉換變體。
[in] pvarSrc
要轉換的變體。
[in] lcid
地區設定識別碼。 當來源或目的地 VARIANTARG 的類型VT_BSTR、VT_DISPATCH或VT_DATE時,LCID 會很有用。
[in] wFlags
標誌。
[in] vt
要轉換的目標類型。 如果傳回碼S_OK,則 *pvargDest的vt欄位保證等於此值。
傳回值
此函式可以傳回下列其中一個值。
傳回碼 | 描述 |
---|---|
|
成功。 |
|
Variant 類型不是有效的 Variant 類型。 |
|
pvarSrc所指向的資料不符合目的地類型。 |
|
引數無法強制轉型為指定的型別。 |
|
其中一個引數無效。 |
|
記憶體不足,無法完成作業。 |
備註
VariantChangeTypeEx函式會處理基本類型之間的強制型別, (包括數值對字串和字串對數值強制型轉) 。 已設定VT_BYREF的變體會藉由取得參考的值來強制轉型為值。 藉由叫用物件的 Value 屬性 (DISPID_VALUE) ,物件會強制轉型為值。
IDispatch::Invoke的實作者通常會決定要存取的成員,然後呼叫VariantChangeType以取得一或多個引數的值。 例如,如果 IDispatch 呼叫指定採用一個字串引數的 SetTitle 成員,實作者會呼叫 VariantChangeTypeEx 嘗試強制引數VT_BSTR。
如果 VariantChangeTypeEx 未傳回錯誤,則可以直接從 VARIANTARG 的 bstrVal 欄位取得引數。 如果 VariantChangeTypeEx 傳回DISP_E_TYPEMISMATCH,則實作者會將 *puArgErr 設定為 0 (指出錯誤) 中的引數,並從 IDispatch::Invoke傳回DISP_E_TYPEMISMATCH。
一種型別的陣列無法轉換成具有此函式之另一種型別的陣列。
需求
目標平台 | Windows |
標頭 | oleauto.h |
程式庫 | OleAut32.lib |
Dll | OleAut32.dll |