Fungsi VariantChangeType (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.
Sintaks
HRESULT VariantChangeType(
[out] VARIANTARG *pvargDest,
[in] const VARIANTARG *pvarSrc,
[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] 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 jenis varian yang valid. |
|
Data yang diarahkan oleh pvarSrc tidak sesuai dengan jenis tujuan. |
|
Argumen tidak dapat dipaksa ke tipe yang ditentukan. |
|
Salah satu argumen tidak valid. |
|
Tidak cukup memori untuk menyelesaikan operasi. |
Keterangan
Fungsi VariantChangeType menangani koersi antara jenis dasar (termasuk koersi numerik-ke-string dan string-ke-numerik). Argumen pvarSrc diubah selama proses konversi. Misalnya, jika varian sumber berjenis VT_BOOL dan tujuannya berjenis VT_UINT, argumen pvarSrc pertama kali dikonversi ke VT_I2 lalu konversi berlanjut. Varian yang memiliki set VT_BYREF dipaksa ke nilai dengan mendapatkan nilai yang direferensikan. Objek dipaksa 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 VariantChangeType untuk mencoba memaksa argumen ke VT_BSTR. Jika VariantChangeType tidak mengembalikan kesalahan, argumen kemudian dapat diperoleh langsung dari bidang bstrVal VARIANTARG. Jika VariantChangeType mengembalikan DISP_E_TYPEMISMATCH, pelaksana akan mengatur *puArgErr ke 0 (menunjukkan argumen dalam kesalahan) dan mengembalikan DISP_E_TYPEMISMATCH dari Invoke.
Array dari satu jenis tidak dapat dikonversi ke array tipe lain dengan fungsi ini.
Persyaratan
Persyaratan | Nilai |
---|---|
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