CComSafeArray Class
Этот класс программа-оболочка для структуры SAFEARRAY.
template <
typename T,
VARTYPE _vartype = _ATL_AutomationType< T >::type
>
class CComSafeArray
Параметры
- T
Тип данных, хранимых в массиве.
Члены
Открытые конструкторы
Имя |
Описание |
---|---|
Конструктор. |
|
Деструктор. |
Открытые методы
Имя |
Описание |
---|---|
Добавляет один или несколько элементов или структура SAFEARRAY, в CComSafeArray. |
|
Вложение структура SAFEARRAY к объекту CComSafeArray. |
|
Копирует содержимое структуры SAFEARRAY в объект CComSafeArray. |
|
Создает копию объекта CComSafeArray. |
|
Создает объект CComSafeArray. |
|
Удаляет объект CComSafeArray. |
|
Наконец SAFEARRAY удаляет из объекта CComSafeArray. |
|
Извлекает один элемент из единый- габаритного массива. |
|
Возвращает число элементов в массиве. |
|
Возвращает количество измерений в массиве. |
|
Получает нижнюю границу заданного измерения массива. |
|
Возвращает адрес элемента данных m_psa. |
|
Возвращает тип данных, хранящихся в массиве. |
|
Возвращает границы для всех измерений массива. |
|
Тесты, если объект CComSafeArray возможность изменения размера. |
|
Получает отдельный элемент от многомерного массива. |
|
Задает значение элемента в многомерной таблице. |
|
Изменяет размер объекта CComSafeArray. |
|
Задает значение элемента в единый- габаритном массиве. |
Открытые операторы
Имя |
Описание |
---|---|
Приводит значение к указателю SAFEARRAY. |
|
Извлекает элемент из массива. |
|
Оператор присваивания. |
Открытые члены данных
Имя |
Описание |
---|---|
Этот элемент данных хранит адрес структуры 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]);
}
}