C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  01.05.2010 — Update World C++: Сборник GPL QT исходников
  15.12.2007 — Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Хостинг:
Windows 2003, ASP.NET 2.0
бесплатный и от 80 руб./мес


   Отправить письмо
Кулабухов Артем, Беларусь




 104 - SafeArrayGetElement / COM-справка / Приложение

Шаг 104 - SafeArrayGetElement

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

HRESULT SafeArrayGetEIement
( 
	SAFEARRAY FAR* рsа, 
	long FAR* rglndices, 
	void FAR* pv
);

Параметры:
psa
Указатель на дескриптор массива, созданный с помощью SafeArrayCreate.
rglndices
Указывает на вектор индексов по каждому измерению массива. Самый правый (наименее значащий) индекс находится в rgIndices[0]. Самый левый индекс хранится в rgIndices[psa->cDims-1].
pv
Указатель, по которому возвращается элемент массива.

Комментарии:
Перед считыванием элемента и после этого функция автоматически вызывает SafeArray-Lock и SafeArrayUnlock. Вызывающий должен предоставить для размещения возвращаемых данных область памяти надлежащего размера. Функция обеспечивает корректное копирование элемента, который представляет собой строку, объект или вариант.

Коды возврата:
Из возвращенного HRESULT получают один из следующих кодов возврата:

Код возвратаЗначение
S_OKУспех.
DISP_E_BADINDEXЗадан неверный индекс.
E_INVALIDARGОдин из аргументов неверен.
E_OUTOFMEMORYНе удается выделить память для элемента.

Пример:

STDMETHODIMP CEnumPoint::Next( 
	ULONG celt, 
	VARIANT FAR rgvar[], 
	ULONG FAR* pceltFetched)
{
unsigned int i; 
long ix; 
HRESULT hresult;

for (i = 0; i < celt; ++i) VariantiInit(&rgvar[i]);
for(i = 0; i < celt; ++i) 
{
	if(m_iCurrent == m_celts) 
	{
		hresult = ReportResult(0, S_FALSE, 0, 0); 
		goto LDone;
		ix = m_iCurrent++;
		hresult = SafeArrayGet Element (m_psa,  &ix, &rgvar[i]);
		if(FAILED(hresult)) goto LErrorO; 
	} 
	hresult = NOERROR;
LDone:
	*pceltFetched = i; 
	return hresult;
LErrorO:
	for(i = 0;  i < celt; ++i)
		VariantClear(&rgvar[i]); 
	return hresult;
}

| |
Автор Каев Артем.
[AD]