CComSafeArray Class
Diese Klasse ist ein Wrapper für die SAFEARRAY-Struktur.
template <
typename T,
VARTYPE _vartype = _ATL_AutomationType< T >::type
>
class CComSafeArray
Parameter
- T
Der Typ von den im Array gespeichert werden, Daten.
Mitglieder
Öffentliche Konstruktoren
Name |
Beschreibung |
---|---|
Der Konstruktor. |
|
Der Destruktor. |
Öffentliche Methoden
Name |
Beschreibung |
---|---|
Fügt eine oder mehrere Elemente oder eine SAFEARRAY-Struktur, CComSafeArray hinzu. |
|
Fügt eine SAFEARRAY-Struktur zu einem CComSafeArray-Objekt. |
|
Kopiert den Inhalt einer SAFEARRAY-Struktur in das CComSafeArray-Objekt. |
|
Erstellt eine Kopie des CComSafeArray-Objekts. |
|
Erstellt ein CComSafeArray-Objekt. |
|
Zerstört ein CComSafeArray-Objekt. |
|
Trennt SAFEARRAY von einem CComSafeArray-Objekt. |
|
Ruft ein einzelnes Element aus einem eindimensionalen Array ab. |
|
Gibt die Anzahl der Elemente im Array zurück. |
|
Gibt die Anzahl der Dimensionen im Array zurück. |
|
Gibt die Untergrenze für eine bestimmte Dimension des Arrays zurück. |
|
Gibt die Adresse des m_psa Datenmembers zurück. |
|
Gibt den Datentyp zurück, die im Array gespeichert sind. |
|
Gibt die Obergrenze für jede Dimension des Arrays zurück. |
|
Prüft, ob ein CComSafeArray-Objekt in der Größe geändert werden kann. |
|
Ruft ein einzelnes Element aus einem mehrdimensionalen Array ab. |
|
Legt den Wert eines Elements in einem mehrdimensionalen Array fest. |
|
Ändert ein CComSafeArray-Objekt Größe. |
|
Legt den Wert eines Elements in einem eindimensionalen Array fest. |
Öffentliche Operatoren
Name |
Beschreibung |
---|---|
Wandelt einen Wert in einen SAFEARRAY Zeiger um. |
|
Ruft ein Element aus dem Array ab. |
|
Zuweisungsoperator. |
Öffentliche Datenmember
Name |
Beschreibung |
---|---|
Dieser Datenmember enthält die Adresse der SAFEARRAY-Struktur an. |
Hinweise
CComSafeArray stellt einen Wrapper für die SAFEARRAY Data Type-Klasse bereit und macht es eine einfache Aufgabe, von Einzel- und mehrdimensionale Arrays nahezu alle der Variante-unterstützten Typen zu erstellen und zu verwalten.
CComSafeArray vereinfacht das Übergeben von Arrays zwischen Prozesse und stellt darüber hinaus zusätzliche Sicherheit im Validieren von Arrayindexwerten für Ober- und Untergrenze bereit.
Die Untergrenze von CComSafeArray kann an jedem benutzerdefinierten Wert beginnen; Allerdings sollte Arrays, auf die durch C++ zugegriffen werden, eine Untergrenze von 0 verwenden. Andere Sprachen wie Visual Basic verwenden möglicherweise andere Zählwerte (beispielsweise, -10 bis 10).
Verwenden Sie CComSafeArray::CreateCComSafeArray, ein Objekt zu erstellen und CComSafeArray::Destroy, um sie zu löschen.
CComSafeArray kann die folgende Teilmenge von VARIANTEN Datentypen enthalten:
VARTYPE |
Beschreibung |
---|---|
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 |
dezimaler Zeiger |
VT_VARIANT |
varianter Zeiger |
VT_CY |
Währungsdatentyp |
Anforderungen
Header: atlsafe.h
Beispiel
// 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]);
}
}