Fungsi VariantChangeTypeEx (oleauto.h)
Penting
API ini dipengaruhi oleh masalah yang dijelaskan dalam topik Dukungan Microsoft VarI8FromCy menghasilkan nilai yang salah ketika nilai CY sangat besar.
Mengonversi varian dari satu jenis ke jenis lainnya, menggunakan LCID.
Sintaks
HRESULT VariantChangeTypeEx(
[out] VARIANTARG *pvargDest,
[in] const VARIANTARG *pvarSrc,
[in] LCID lcid,
[in] USHORT wFlags,
[in] VARTYPE vt
);
Parameter
[out] pvargDest
Varian tujuan. Jika ini sama dengan pvarSrc, varian akan dikonversi di tempat.
[in] pvarSrc
Varian yang akan dikonversi.
[in] lcid
Pengidentifikasi lokal. LCID berguna ketika jenis VARIANTARG sumber atau tujuan VT_BSTR, VT_DISPATCH, atau VT_DATE.
[in] wFlags
Bendera.
[in] vt
Jenis yang akan dikonversi. Jika kode pengembalian S_OK, bidang vt dari *pvargDest dijamin sama dengan nilai ini.
Nilai kembali
Fungsi ini dapat mengembalikan salah satu nilai ini.
Menampilkan kode | Deskripsi |
---|---|
|
Berhasil. |
|
Jenis varian bukan tipe varian yang valid. |
|
Data yang diarahkan oleh pvarSrc tidak sesuai dengan jenis tujuan. |
|
Argumen tidak dapat dikoercasi ke tipe yang ditentukan. |
|
Salah satu argumen tidak valid. |
|
Tidak cukup memori untuk menyelesaikan operasi. |
Keterangan
Fungsi VariantChangeTypeEx menangani koersi antara jenis dasar (termasuk koersi numerik-ke-string dan string-ke-numerik). Varian yang memiliki set VT_BYREF dipaksa ke nilai dengan mendapatkan nilai yang direferensikan. Objek dikoercasi ke nilai dengan memanggil properti Nilai objek (DISPID_VALUE).
Biasanya, pelaksana IDispatch::Invoke menentukan anggota mana yang sedang diakses, lalu memanggil VariantChangeType untuk mendapatkan nilai satu atau beberapa argumen. Misalnya, jika panggilan IDispatch menentukan anggota SetTitle yang mengambil satu argumen string, pelaksana akan memanggil VariantChangeTypeEx untuk mencoba memaksa argumen ke VT_BSTR.
Jika VariantChangeTypeEx tidak mengembalikan kesalahan, argumen kemudian dapat diperoleh langsung dari bidang bstrVal VARIANTARG. Jika VariantChangeTypeEx mengembalikan DISP_E_TYPEMISMATCH, pelaksana akan mengatur *puArgErr ke 0 (menunjukkan argumen dalam kesalahan) dan mengembalikan DISP_E_TYPEMISMATCH dari IDispatch::Invoke.
Array dari satu jenis tidak dapat dikonversi ke array dari jenis lain dengan fungsi ini.
Persyaratan
Target Platform | Windows |
Header | oleauto.h |
Pustaka | OleAut32.lib |
DLL | OleAut32.dll |
Lihat juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk