Поделиться через


CComSafeArray Class

Этот класс программа-оболочка для структуры SAFEARRAY.

template <
   typename T,
   VARTYPE _vartype = _ATL_AutomationType< T >::type
>
class CComSafeArray

Параметры

  • T
    Тип данных, хранимых в массиве.

Члены

Открытые конструкторы

Имя

Описание

CComSafeArray::CComSafeArray

Конструктор.

CComSafeArray::~CComSafeArray

Деструктор.

Открытые методы

Имя

Описание

CComSafeArray::Add

Добавляет один или несколько элементов или структура SAFEARRAY, в CComSafeArray.

CComSafeArray::Attach

Вложение структура SAFEARRAY к объекту CComSafeArray.

CComSafeArray::CopyFrom

Копирует содержимое структуры SAFEARRAY в объект CComSafeArray.

CComSafeArray::CopyTo

Создает копию объекта CComSafeArray.

CComSafeArray::Create

Создает объект CComSafeArray.

CComSafeArray::Destroy

Удаляет объект CComSafeArray.

CComSafeArray::Detach

Наконец SAFEARRAY удаляет из объекта CComSafeArray.

CComSafeArray::GetAt

Извлекает один элемент из единый- габаритного массива.

CComSafeArray::GetCount

Возвращает число элементов в массиве.

CComSafeArray::GetDimensions

Возвращает количество измерений в массиве.

CComSafeArray::GetLowerBound

Получает нижнюю границу заданного измерения массива.

CComSafeArray::GetSafeArrayPtr

Возвращает адрес элемента данных m_psa.

CComSafeArray::GetType

Возвращает тип данных, хранящихся в массиве.

CComSafeArray::GetUpperBound

Возвращает границы для всех измерений массива.

CComSafeArray::IsSizable

Тесты, если объект CComSafeArray возможность изменения размера.

CComSafeArray::MultiDimGetAt

Получает отдельный элемент от многомерного массива.

CComSafeArray::MultiDimSetAt

Задает значение элемента в многомерной таблице.

CComSafeArray::Resize

Изменяет размер объекта CComSafeArray.

CComSafeArray::SetAt

Задает значение элемента в единый- габаритном массиве.

Открытые операторы

Имя

Описание

CComSafeArray::operator LPSAFEARRAY

Приводит значение к указателю SAFEARRAY.

CComSafeArray::operator []

Извлекает элемент из массива.

CComSafeArray::operator =

Оператор присваивания.

Открытые члены данных

Имя

Описание

CComSafeArray::m_psa

Этот элемент данных хранит адрес структуры SAFEARRAY.

Заметки

CComSafeArray содержит программу-оболочку для класса SAFEARRAY Data Type, делая ее простое дело создания и управления единичное и многомерные массивы практически любых Вариант- поддерживаемых типов.

CComSafeArray упрощает передача массивов между процессами и дополнительно предоставляет дополнительную безопасность путем проверки значения индекса массива и меньших к верхней границы.

Нижняя граница CComSafeArray может запуститься на все определяемые пользователем значения; однако массивы, получить доступ через C++, должны использовать нижнюю границу 0. Другие языки, как Visual Basic могут использовать другие ограничивающего значения (например, от -10 до 10).

Используйте CComSafeArray::Create для создания объекта CComSafeArray и CComSafeArray::Destroy для удаления.

CComSafeArray может содержать следующее подмножество РАЗЛИЧНЫХ типов данных:

VARTYPE

Описание

VT_I1

char

VT_I2

short

VT_I4

Целочисленное значение.

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

десятичный указатель

VT_VARIANT

другой указатель

VT_CY

Тип данных валюты

Требования

Header: atlsafe.h

Пример

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

См. также

Ссылки

CComSafeArray::Create

CComSafeArray::Destroy

Другие ресурсы

SAFEARRAY Data Type

ATL Class Overview