Freigeben über


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

CComSafeArray::CComSafeArray

Der Konstruktor.

CComSafeArray::~CComSafeArray

Der Destruktor.

Öffentliche Methoden

Name

Beschreibung

CComSafeArray::Add

Fügt eine oder mehrere Elemente oder eine SAFEARRAY-Struktur, CComSafeArray hinzu.

CComSafeArray::Attach

Fügt eine SAFEARRAY-Struktur zu einem CComSafeArray-Objekt.

CComSafeArray::CopyFrom

Kopiert den Inhalt einer SAFEARRAY-Struktur in das CComSafeArray-Objekt.

CComSafeArray::CopyTo

Erstellt eine Kopie des CComSafeArray-Objekts.

CComSafeArray::Create

Erstellt ein CComSafeArray-Objekt.

CComSafeArray::Destroy

Zerstört ein CComSafeArray-Objekt.

CComSafeArray::Detach

Trennt SAFEARRAY von einem CComSafeArray-Objekt.

CComSafeArray::GetAt

Ruft ein einzelnes Element aus einem eindimensionalen Array ab.

CComSafeArray::GetCount

Gibt die Anzahl der Elemente im Array zurück.

CComSafeArray::GetDimensions

Gibt die Anzahl der Dimensionen im Array zurück.

CComSafeArray::GetLowerBound

Gibt die Untergrenze für eine bestimmte Dimension des Arrays zurück.

CComSafeArray::GetSafeArrayPtr

Gibt die Adresse des m_psa Datenmembers zurück.

CComSafeArray::GetType

Gibt den Datentyp zurück, die im Array gespeichert sind.

CComSafeArray::GetUpperBound

Gibt die Obergrenze für jede Dimension des Arrays zurück.

CComSafeArray::IsSizable

Prüft, ob ein CComSafeArray-Objekt in der Größe geändert werden kann.

CComSafeArray::MultiDimGetAt

Ruft ein einzelnes Element aus einem mehrdimensionalen Array ab.

CComSafeArray::MultiDimSetAt

Legt den Wert eines Elements in einem mehrdimensionalen Array fest.

CComSafeArray::Resize

Ändert ein CComSafeArray-Objekt Größe.

CComSafeArray::SetAt

Legt den Wert eines Elements in einem eindimensionalen Array fest.

Öffentliche Operatoren

Name

Beschreibung

CComSafeArray::operator LPSAFEARRAY

Wandelt einen Wert in einen SAFEARRAY Zeiger um.

CComSafeArray::operator []

Ruft ein Element aus dem Array ab.

CComSafeArray::operator =

Zuweisungsoperator.

Öffentliche Datenmember

Name

Beschreibung

CComSafeArray::m_psa

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]);
   }   
}

Siehe auch

Referenz

CComSafeArray::Create

CComSafeArray::Destroy

Weitere Ressourcen

SAFEARRAY Data Type

ATL Class Overview