CComSafeArray
Kelas
Kelas ini adalah pembungkus untuk SAFEARRAY
struktur.
Sintaks
template <typename T, VARTYPE _vartype = _ATL_AutomationType<T>::type>
class CComSafeArray
Parameter
T
Jenis data yang akan disimpan dalam array.
Anggota
Konstruktor Publik
Nama | Deskripsi |
---|---|
CComSafeArray::CComSafeArray |
Konstruktor. |
CComSafeArray::~CComSafeArray |
Destruktor. |
Metode Publik
Nama | Deskripsi |
---|---|
CComSafeArray::Add |
Menambahkan satu atau beberapa elemen, atau SAFEARRAY struktur, ke CComSafeArray . |
CComSafeArray::Attach |
Melampirkan SAFEARRAY struktur ke CComSafeArray objek. |
CComSafeArray::CopyFrom |
Menyalin konten SAFEARRAY struktur ke CComSafeArray dalam objek. |
CComSafeArray::CopyTo |
Membuat salinan CComSafeArray objek. |
CComSafeArray::Create |
CComSafeArray Membuat objek. |
CComSafeArray::Destroy |
Menghancurkan objek CComSafeArray . |
CComSafeArray::Detach |
Mencopot SAFEARRAY dari CComSafeArray objek. |
CComSafeArray::GetAt |
Mengambil elemen tunggal dari array dimensi tunggal. |
CComSafeArray::GetCount |
Mengembalikan jumlah elemen dalam array. |
CComSafeArray::GetDimensions |
Mengembalikan jumlah dimensi dalam array. |
CComSafeArray::GetLowerBound |
Mengembalikan batas bawah untuk dimensi array tertentu. |
CComSafeArray::GetSafeArrayPtr |
Mengembalikan alamat m_psa anggota data. |
CComSafeArray::GetType |
Mengembalikan jenis data yang disimpan dalam array. |
CComSafeArray::GetUpperBound |
Mengembalikan batas atas untuk dimensi array apa pun. |
CComSafeArray::IsSizable |
Menguji apakah CComSafeArray objek dapat diubah ukurannya. |
CComSafeArray::MultiDimGetAt |
Mengambil elemen tunggal dari array multididat. |
CComSafeArray::MultiDimSetAt |
Mengatur nilai elemen dalam array multidimensi. |
CComSafeArray::Resize |
Mengubah ukuran CComSafeArray objek. |
CComSafeArray::SetAt |
Mengatur nilai elemen dalam array dimensi tunggal. |
Operator Publik
Nama | Deskripsi |
---|---|
CComSafeArray::operator LPSAFEARRAY |
Melemparkan nilai ke SAFEARRAY penunjuk. |
CComSafeArray::operator[] |
Mengambil elemen dari array. |
CComSafeArray::operator = |
Operator penugasan. |
Anggota Data Publik
Nama | Deskripsi |
---|---|
CComSafeArray::m_psa |
Anggota data ini memegang alamat SAFEARRAY struktur. |
Keterangan
CComSafeArray
menyediakan pembungkus untuk SAFEARRAY
kelas jenis data, menjadikannya masalah sederhana untuk membuat dan mengelola array tunggal dan multidansa dari hampir semua jenis yang didukung VARIANT
.
CComSafeArray
menyederhanakan larik passing antar proses, dan selain itu memberikan keamanan ekstra dengan memeriksa nilai indeks array terhadap batas atas dan bawah.
Batas bawah CComSafeArray
dapat dimulai pada nilai yang ditentukan pengguna; namun, array yang diakses melalui C++ harus menggunakan batas bawah 0. Bahasa lain seperti Visual Basic dapat menggunakan nilai batas lainnya (misalnya, -10 hingga 10).
Gunakan CComSafeArray::Create
untuk membuat CComSafeArray
objek, dan CComSafeArray::Destroy
untuk menghapusnya.
CComSafeArray
Bisa berisi subset jenis VARIANT
data berikut:
VARTYPE |
Deskripsi |
---|---|
VT_I1 |
char |
VT_I2 |
short |
VT_I4 |
int |
VT_I4 |
long |
VT_I8 |
longlong |
VT_UI1 |
byte |
VT_UI2 |
ushort |
VT_UI4 |
uint |
VT_UI4 |
ulong |
VT_UI8 |
ulonglong |
VT_R4 |
float |
VT_R8 |
double |
VT_DECIMAL |
penunjuk desimal |
VT_VARIANT |
penunjuk varian |
VT_CY |
Jenis data mata uang |
Persyaratan
Header: atlsafe.h
Contoh
// Create a multidimensional array,
// then write and read elements
// Define an array of character pointers
CComSafeArray<char> *pSar;
char cElement;
char cTable[2][3] = {'A','B','C','D','E','F'};
// Declare the variable used to store the
// array indexes
LONG aIndex[2];
// Define the array bound structure
CComSafeArrayBound bound[2];
bound[0].SetCount(2);
bound[0].SetLowerBound(0);
bound[1].SetCount(3);
bound[1].SetLowerBound(0);
// Create a new 2 dimensional array
// each dimension size is 3
pSar = new CComSafeArray<char>(bound,2);
// Use MultiDimSetAt to store characters in the array
for (int x = 0; x < 2; x++)
{
for (int y = 0; y < 3; y++)
{
aIndex[0] = x;
aIndex[1] = y;
HRESULT hr = pSar->MultiDimSetAt(aIndex,cTable[x][y]);
ATLASSERT(hr == S_OK);
}
}
// Use MultiDimGetAt to retrieve characters in the array
for (int x = 0; x < 2; x++)
{
for (int y = 0; y < 3; y++)
{
aIndex[0]=x;
aIndex[1]=y;
HRESULT hr = pSar->MultiDimGetAt(aIndex,cElement);
ATLASSERT(hr == S_OK);
ATLASSERT(cElement == cTable[x][y]);
}
}
CComSafeArray::Add
Menambahkan satu atau beberapa elemen, atau SAFEARRAY
struktur, ke CComSafeArray
.
HRESULT Add(const SAFEARRAY* psaSrc);
HRESULT Add(ULONG ulCount, const T* pT, BOOL bCopy = TRUE);
HRESULT Add(const T& t, BOOL bCopy = TRUE);
Parameter
psaSrc
Penunjuk ke SAFEARRAY
objek.
ulCount
Jumlah objek yang akan ditambahkan ke array.
pT
Penunjuk ke satu atau beberapa objek yang akan ditambahkan ke array.
t
Referensi ke objek yang akan ditambahkan ke array.
bCopy
Menunjukkan apakah salinan data harus dibuat. Nilai defaultnya adalah TRUE
.
Nilai hasil
Mengembalikan S_OK
keberhasilan, atau kesalahan HRESULT
saat gagal.
Keterangan
Objek baru ditambahkan ke akhir objek yang ada SAFEARRAY
. Menambahkan objek ke objek multidimensi SAFEARRAY
tidak didukung. Saat menambahkan array objek yang ada, kedua array harus berisi elemen dengan jenis yang sama.
Bendera bCopy
diperhitungkan ketika elemen jenis BSTR
atau VARIANT
ditambahkan ke array. Nilai TRUE
default memastikan bahwa salinan baru terbuat dari data saat elemen ditambahkan ke array.
CComSafeArray::Attach
Melampirkan SAFEARRAY
struktur ke CComSafeArray
objek.
HRESULT Attach(const SAFEARRAY* psaSrc);
Parameter
psaSrc
Penunjuk ke SAFEARRAY
struktur.
Nilai hasil
Mengembalikan S_OK
keberhasilan, atau kesalahan HRESULT
saat gagal.
Keterangan
Melampirkan SAFEARRAY
struktur ke CComSafeArray
objek, membuat metode yang ada CComSafeArray
tersedia.
CComSafeArray::CComSafeArray
Konstruktor.
CComSafeArray();
CComSafeArray(const SAFEARRAYBOUND& bound);
CComSafeArray(ULONG ulCount, LONG lLBound = 0);
CComSafeArray(const SAFEARRAYBOUND* pBound, UINT uDims = 1);
CComSafeArray(const CComSafeArray& saSrc);
CComSafeArray(const SAFEARRAY& saSrc);
CComSafeArray(const SAFEARRAY* psaSrc);
Parameter
bound
Sebuah SAFEARRAYBOUND
struktur.
ulCount
Jumlah elemen dalam array.
lLBound
Nilai terikat yang lebih rendah; yaitu, indeks elemen pertama dalam array.
pBound
Penunjuk ke SAFEARRAYBOUND
struktur.
uDims
Jumlah dimensi dalam array.
saSrc
Referensi ke SAFEARRAY
struktur atau CComSafeArray
objek. Dalam kedua kasus, konstruktor menggunakan referensi ini untuk membuat salinan array, sehingga array tidak dirujuk setelah konstruksi.
psaSrc
Penunjuk ke SAFEARRAY
struktur. Konstruktor menggunakan alamat ini untuk membuat salinan array, sehingga array tidak pernah dirujuk setelah konstruksi.
Keterangan
CComSafeArray
Membuat objek.
CComSafeArray::~CComSafeArray
Destruktor.
~CComSafeArray() throw()
Keterangan
Membebaskan semua sumber daya yang dialokasikan.
CComSafeArray::CopyFrom
Menyalin konten SAFEARRAY
struktur ke CComSafeArray
dalam objek.
HRESULT CopyFrom(LPSAFEARRAY* ppArray);
Parameter
ppArray
Arahkan ke SAFEARRAY
untuk menyalin.
Nilai hasil
Mengembalikan S_OK
keberhasilan, atau kesalahan HRESULT
saat gagal.
Keterangan
Metode ini menyalin isi ke SAFEARRAY
dalam objek saat ini CComSafeArray
. Konten array yang ada diganti.
CComSafeArray::CopyTo
Membuat salinan CComSafeArray
objek.
HRESULT CopyTo(LPSAFEARRAY* ppArray);
Parameter
ppArray
Penunjuk ke lokasi untuk membuat yang baru SAFEARRAY
.
Nilai hasil
Mengembalikan S_OK
keberhasilan, atau kesalahan HRESULT
saat gagal.
Keterangan
Metode ini menyalin konten CComSafeArray
objek ke dalam SAFEARRAY
struktur.
CComSafeArray::Create
CComSafeArray
Membuat .
HRESULT Create(const SAFEARRAYBOUND* pBound, UINT uDims = 1);
HRESULT Create(ULONG ulCount = 0, LONG lLBound = 0);
Parameter
pBound
Penunjuk ke SAFEARRAYBOUND
objek.
uDims
Jumlah dimensi dalam array.
ulCount
Jumlah elemen dalam array.
lLBound
Nilai terikat yang lebih rendah; yaitu, indeks elemen pertama dalam array.
Nilai hasil
Mengembalikan S_OK
keberhasilan, atau kesalahan HRESULT
saat gagal.
Keterangan
Objek CComSafeArray
dapat dibuat dari struktur yang ada SAFEARRAYBOUND
dan jumlah dimensi, atau dengan menentukan jumlah elemen dalam array dan batas bawah. Jika array akan diakses dari C++, batas bawah harus 0. Bahasa lain dapat memungkinkan nilai lain untuk batas bawah (misalnya, Visual Basic mendukung array dengan elemen dengan rentang seperti -10 hingga 10).
CComSafeArray::Destroy
Menghancurkan objek CComSafeArray
.
HRESULT Destroy();
Nilai hasil
Mengembalikan S_OK
keberhasilan, atau kesalahan HRESULT
saat gagal.
Keterangan
Menghancurkan objek yang ada CComSafeArray
dan semua data yang ada di dalamnya.
CComSafeArray::Detach
Mencopot SAFEARRAY
dari CComSafeArray
objek.
LPSAFEARRAY Detach();
Nilai hasil
Mengembalikan penunjuk ke SAFEARRAY
objek.
Keterangan
Metode ini mencopot SAFEARRAY
objek dari CComSafeArray
objek.
CComSafeArray::GetAt
Mengambil elemen tunggal dari array dimensi tunggal.
T& GetAt(LONG lIndex) const;
Parameter
lIndex
Jumlah indeks nilai dalam array yang akan dikembalikan.
Nilai hasil
Mengembalikan referensi ke elemen array yang diperlukan.
CComSafeArray::GetCount
Mengembalikan jumlah elemen dalam array.
ULONG GetCount(UINT uDim = 0) const;
Parameter
uDim
Dimensi array.
Nilai hasil
Mengembalikan jumlah elemen dalam array.
Keterangan
Ketika digunakan dengan array multidireksional, metode ini akan mengembalikan jumlah elemen dalam dimensi tertentu saja.
CComSafeArray::GetDimensions
Mengembalikan jumlah dimensi dalam array.
UINT GetDimensions() const;
Nilai hasil
Mengembalikan jumlah dimensi dalam array.
CComSafeArray::GetLowerBound
Mengembalikan batas bawah untuk dimensi array tertentu.
LONG GetLowerBound(UINT uDim = 0) const;
Parameter
uDim
Dimensi array untuk mendapatkan batas bawah. Jika dihilangkan, defaultnya adalah 0.
Nilai hasil
Mengembalikan batas bawah.
Keterangan
Jika batas bawah adalah 0, ini menunjukkan array seperti C yang elemen pertamanya adalah elemen nomor 0. Jika terjadi kesalahan, misalnya, argumen dimensi yang tidak valid, metode ini memanggil AtlThrow
dengan menjelaskan HRESULT
kesalahan.
CComSafeArray::GetSafeArrayPtr
Mengembalikan alamat m_psa
anggota data.
LPSAFEARRAY* GetSafeArrayPtr() throw();
Nilai hasil
Mengembalikan penunjuk ke CComSafeArray::m_psa
anggota data.
CComSafeArray::GetType
Mengembalikan jenis data yang disimpan dalam array.
VARTYPE GetType() const;
Nilai hasil
Mengembalikan jenis data yang disimpan dalam array, yang bisa menjadi salah satu jenis berikut:
VARTYPE |
Deskripsi |
---|---|
VT_I1 |
char |
VT_I2 |
short |
VT_I4 |
int |
VT_I4 |
long |
VT_I8 |
longlong |
VT_UI1 |
byte |
VT_UI2 |
ushort |
VT_UI4 |
uint |
VT_UI4 |
ulong |
VT_UI8 |
ulonglong |
VT_R4 |
float |
VT_R8 |
double |
VT_DECIMAL |
penunjuk desimal |
VT_VARIANT |
penunjuk varian |
VT_CY |
Jenis data mata uang |
CComSafeArray::GetUpperBound
Mengembalikan batas atas untuk dimensi array apa pun.
LONG GetUpperBound(UINT uDim = 0) const;
Parameter
uDim
Dimensi array untuk mendapatkan batas atas. Jika dihilangkan, defaultnya adalah 0.
Nilai hasil
Mengembalikan batas atas. Nilai ini inklusif, indeks maksimum yang valid untuk dimensi ini.
Keterangan
Jika terjadi kesalahan, misalnya, argumen dimensi yang tidak valid, metode ini memanggil AtlThrow
dengan menjelaskan HRESULT
kesalahan.
CComSafeArray::IsSizable
Menguji apakah CComSafeArray
objek dapat diubah ukurannya.
bool IsSizable() const;
Nilai hasil
Mengembalikan TRUE
jika CComSafeArray
dapat diubah ukurannya, FALSE
jika tidak dapat.
CComSafeArray::m_psa
Memegang alamat struktur yang SAFEARRAY
diakses.
LPSAFEARRAY m_psa;
CComSafeArray::MultiDimGetAt
Mengambil elemen tunggal dari array multididat.
HRESULT MultiDimGetAt(const LONG* alIndex, T& t);
Parameter
alIndex
Penunjuk ke vektor indeks untuk setiap dimensi dalam array. Dimensi paling kiri (paling signifikan) adalah alIndex[0]
.
t
Referensi ke data yang dikembalikan.
Nilai hasil
Mengembalikan S_OK
keberhasilan, atau kesalahan HRESULT
saat gagal.
CComSafeArray::MultiDimSetAt
Mengatur nilai elemen dalam array multidimensi.
HRESULT MultiDimSetAt(const LONG* alIndex, const T& t);
Parameter
alIndex
Penunjuk ke vektor indeks untuk setiap dimensi dalam array. Dimensi paling kanan (paling tidak signifikan) adalah alIndex[0]
.
T
Menentukan nilai elemen baru.
Nilai hasil
Mengembalikan S_OK
keberhasilan, atau kesalahan HRESULT
saat gagal.
Keterangan
Ini adalah versi multidisipional dari CComSafeArray::SetAt
.
CComSafeArray::operator []
Mengambil elemen dari array.
T& operator[](long lindex) const;
T& operator[](int nindex) const;
Parameter
lIndex
, nIndex
Jumlah indeks elemen yang diperlukan dalam array.
Nilai hasil
Mengembalikan elemen array yang sesuai.
Keterangan
Melakukan fungsi CComSafeArray::GetAt
serupa dengan , namun operator ini hanya berfungsi dengan array dimensi tunggal.
CComSafeArray::operator =
Operator penugasan.
ATL::CComSafeArray<T>& operator=(const ATL::CComSafeArray& saSrc);
ATL::CComSafeArray<T>& operator=(const SAFEARRAY* psaSrc);
Parameter
saSrc
Referensi ke CComSafeArray
objek.
psaSrc
Penunjuk ke SAFEARRAY
objek.
Nilai hasil
Mengembalikan jenis data yang disimpan dalam array.
CComSafeArray::operator LPSAFEARRAY
Melemparkan nilai ke SAFEARRAY
penunjuk.
operator LPSAFEARRAY() const;
Nilai hasil
Melemparkan nilai ke SAFEARRAY
penunjuk.
CComSafeArray::Resize
Mengubah ukuran CComSafeArray
objek.
HRESULT Resize(const SAFEARRAYBOUND* pBound);
HRESULT Resize(ULONG ulCount, LONG lLBound = 0);
Parameter
pBound
Penunjuk ke SAFEARRAYBOUND
struktur yang berisi informasi tentang jumlah elemen dan batas bawah array.
ulCount
Jumlah objek yang diminta dalam array yang diubah ukurannya.
lLBound
Batas bawah.
Nilai hasil
Mengembalikan S_OK
keberhasilan, atau kesalahan HRESULT
saat gagal.
Keterangan
Metode ini hanya mengubah ukuran dimensi paling kanan. Ini tidak akan mengubah ukuran array yang kembali IsResizable
sebagai FALSE
.
CComSafeArray::SetAt
Mengatur nilai elemen dalam array dimensi tunggal.
HRESULT SetAt(LONG lIndex, const T& t, BOOL bCopy = TRUE);
Parameter
lIndex
Jumlah indeks elemen array yang akan diatur.
t
Nilai baru elemen yang ditentukan.
bCopy
Menunjukkan apakah salinan data harus dibuat. Nilai defaultnya adalah TRUE
.
Nilai hasil
Mengembalikan S_OK
keberhasilan, atau kesalahan HRESULT
saat gagal.
Keterangan
Bendera bCopy
diperhitungkan ketika elemen jenis BSTR
atau VARIANT
ditambahkan ke array. Nilai TRUE
default memastikan bahwa salinan baru terbuat dari data saat elemen ditambahkan ke array.
Lihat juga
SAFEARRAY
Tipe Data
CComSafeArray::Create
CComSafeArray::Destroy
Gambaran Umum Kelas