Bagikan melalui


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.

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 perilakunya 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 tipe varian yang valid.
DISP_E_OVERFLOW
Data yang diarahkan oleh pvarSrc tidak sesuai dengan jenis tujuan.
DISP_E_TYPEMISMATCH
Argumen tidak dapat dikoercasi ke tipe yang ditentukan.
E_INVALIDARG
Salah satu argumen tidak valid.
E_OUTOFMEMORY
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.

Catatan Jenis VARIANTARG tidak boleh diubah di array rgvarg di tempat.
 

Persyaratan

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

Lihat juga

Fungsi Manipulasi Varian

VariantChangeType