Bagikan melalui


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.

Nilai Makna
VARIANT_NOVALUEPROP
Mencegah fungsi mencoba memaksa objek ke jenis dasar dengan mendapatkan properti Nilai. Aplikasi harus mengatur bendera ini hanya jika perlu, karena membuat perilaku mereka tidak konsisten dengan aplikasi lain.
VARIANT_ALPHABOOL
Mengonversi nilai VT_BOOL menjadi string yang berisi "True" atau "False".
VARIANT_NOUSEROVERRIDE
Untuk konversi ke atau dari VT_BSTR, meneruskan LOCALE_NOUSEROVERRIDE ke rutinitas pemaksaan inti.
VARIANT_LOCALBOOL
Untuk konversi dari VT_BOOL ke VT_BSTR dan kembali, gunakan bahasa yang ditentukan oleh lokal yang digunakan di komputer lokal.

[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
S_OK
Berhasil.
DISP_E_BADVARTYPE
Jenis varian bukan jenis varian yang valid.
DISP_E_OVERFLOW
Data yang diarahkan oleh pvarSrc tidak sesuai dengan jenis tujuan.
DISP_E_TYPEMISMATCH
Argumen tidak dapat dipaksa ke tipe yang ditentukan.
E_INVALIDARG
Salah satu argumen tidak valid.
E_OUTOFMEMORY
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.

Catatan Jenis VARIANTARG tidak boleh diubah di array rgvarg .
 

Persyaratan

Persyaratan Nilai
Target Platform Windows
Header oleauto.h
Pustaka OleAut32.lib
DLL OleAut32.dll

Lihat juga

Fungsi Manipulasi Varian

VariantChangeTypeEx