Classe di CComSafeArray
Questa classe è un wrapper per la struttura SAFEARRAY.
template <
typename T,
VARTYPE _vartype = _ATL_AutomationType< T >::type
>
class CComSafeArray
Parametri
- T
Il tipo di dati da archiviare nella matrice.
Membri
Costruttori pubblici
Nome |
Descrizione |
---|---|
Costruttore. |
|
Il distruttore. |
Metodi pubblici
Nome |
Descrizione |
---|---|
Aggiunge uno o più elementi, o una struttura SAFEARRAY, a CComSafeArray. |
|
Aggiunge una struttura SAFEARRAY a un oggetto CComSafeArray. |
|
Copia il contenuto di una struttura SAFEARRAY nell'oggetto CComSafeArray. |
|
Crea una copia dell'oggetto CComSafeArray. |
|
Crea un oggetto CComSafeArray. |
|
Elimina un oggetto CComSafeArray. |
|
Rimuove SAFEARRAY da un oggetto CComSafeArray. |
|
Recupera un singolo elemento da una matrice unidimensionale. |
|
Restituisce il numero di elementi nella matrice. |
|
Restituisce il numero di dimensioni della matrice. |
|
Restituisce il limite inferiore per una determinata dimensione della matrice. |
|
Restituisce l'indirizzo del membro dati m_psa. |
|
Restituisce il tipo di dati memorizzati nella matrice. |
|
Restituisce il limite superiore per qualsiasi dimensione della matrice. |
|
Verifica se un oggetto CComSafeArray possono essere ridimensionati. |
|
Recupera un singolo elemento da una matrice multidimensionale. |
|
Imposta il valore di un elemento in una matrice multidimensionale. |
|
Ridimensiona un oggetto CComSafeArray. |
|
Imposta il valore di un elemento in una matrice unidimensionale. |
Operatori pubblici
Nome |
Descrizione |
---|---|
Esegue il cast di un valore a un puntatore SAFEARRAY. |
|
Recupera un elemento dalla matrice. |
|
Operatore di assegnazione. |
Membri dati pubblici
Nome |
Descrizione |
---|---|
Questo membro dati utilizza l'indirizzo della struttura SAFEARRAY. |
Note
CComSafeArray fornisce wrapper per la classe SAFEARRAY Data Type, convertirlo è possibile creare e gestire solo e matrici multidimensionali di quasi qualsiasi dei tipi Variante- supportati.
CComSafeArray semplifica passare matrici tra processi e fornisce inoltre la sicurezza aggiuntiva controllando i valori di indice della matrice sui limiti superiore e inferiore.
Il limite inferiore CComSafeArray può iniziare a qualsiasi valore definito dall'utente; tuttavia, le matrici cui si accede con C++ devono utilizzare un limite inferiore a 0.Altri linguaggi quali Visual Basic possono utilizzare altri valori di delimitazione, ad esempio -10 - 10).
Utilizzo CComSafeArray::Create creare un oggetto CComSafeArray e CComSafeArray::Destroy per eliminarlo.
CComSafeArray può contenere l'sottoinsieme dei tipi di dati VARIABILI:
VARTYPE |
Descrizione |
---|---|
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 |
puntatore decimale |
VT_VARIANT |
puntatore variabile |
VT_CY |
Tipo di dati della valuta |
Requisiti
Header: atlsafe.h
Esempio
// 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]);
}
}