Třída CComSafeArray
Tato třída je obal SAFEARRAY struktury.
template <
typename T,
VARTYPE _vartype = _ATL_AutomationType< T >::type
>
class CComSafeArray
Parametry
- T
Typ dat uložené v poli.
Členy
Veřejné konstruktory
Název |
Description |
---|---|
Konstruktor. |
|
Destruktoru. |
Veřejné metody
Název |
Description |
---|---|
Přidá jeden nebo více prvků nebo SAFEARRAY do struktury CComSafeArray . |
|
Připojí SAFEARRAY ke CComSafeArray objektu. |
|
Zkopíruje obsah SAFEARRAY do struktury CComSafeArray objektu. |
|
Vytvoří kopii CComSafeArray objektu. |
|
Vytvoří CComSafeArray objektu. |
|
Ničí CComSafeArray objektu. |
|
Odpojí SAFEARRAY z CComSafeArray objektu. |
|
Zkopíruje jeden prvek z jednorozměrná pole. |
|
Vrátí počet prvků v poli. |
|
Vrátí počet rozměrů pole. |
|
Vrátí dolní mez pro danou dimenzi matice. |
|
Vrátí adresu m_psa datový člen. |
|
Vrátí typ dat uložených v poli. |
|
Vrátí horní mez pro jakýkoli rozměr pole. |
|
Pokud testy CComSafeArray můžete změnit velikost objektu. |
|
Zkopíruje jeden prvek z multidimenzionální pole. |
|
Nastaví hodnotu prvku v multidimenzionální pole. |
|
Změní velikost CComSafeArray objektu. |
|
Nastaví hodnotu elementu jednorozměrná pole. |
Veřejné operátory
Název |
Description |
---|---|
Vrhá hodnotu SAFEARRAY ukazatel. |
|
Prvek získá z pole. |
|
Operátor přiřazení. |
Veřejné datové členy
Název |
Description |
---|---|
Tento datový člen obsahuje adresu SAFEARRAY struktury. |
Poznámky
CComSafeArrayposkytuje obal SAFEARRAY Data Type třídy, takže jednoduché věci vytvořit a spravovat jediný a vícedimenzionální pole téměř všech typů podporovaných VARIANT.
CComSafeArrayzjednodušuje předávání polí mezi procesy a také poskytuje další zabezpečení kontrolou hodnoty pole indexu proti horní a dolní meze.
Dolní mez CComSafeArray můžete spustit v libovolné hodnotě uživatelem definované; pole, které jsou přístupné pomocí C++ však měli použít dolní mez 0.Další jazyky, například Visual Basic může použít jiné hodnoty ohraničovacího rámečku (například -10 do 10).
Použití CComSafeArray::Create k vytvoření CComSafeArray objektu, a CComSafeArray::Destroy jej odstranit.
A CComSafeArray může obsahovat následující podmnožiny datové typy VARIANT:
VARTYPE |
Description |
---|---|
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 |
desítkové ukazatel |
VT_VARIANT |
varianty ukazatel |
VT_CY |
Typ dat Měna |
Požadavky
Záhlaví: atlsafe.h
Příklad
// 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(3);
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]);
}
}