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++ — ©...
  Update World C++: Сборник GPL QT исходников
  Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Letyshops [lifetime]

 47 - IEnumVARIANT::Next / COM-справка / Приложение

Шаг 47 - IEnumVARIANT::Next

Пытается получить следующие celt элементов последовательности перечисления и возвращает их в массиве, на который указывает rgvar.

HRESULT Next
( 
	unsigned long celt, 
	VARIANT FAR* rgvar, 
	unsigned long FAR* pceltFetched
);

Параметры:

  • celt - Число запрашиваемых элементов.
  • rgvar - Массив, в который помещаются возвращающие элементы. Размер массива должен быть не менее celt.
  • pceltFetched - Указатель на число элементов, возвращенных в rgvar, или NULL.

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

Код возвратаЗначение
S_OKЧисло возвращенных элементов равно celt.
S_FALSEЧисло возвращенных элементов меньше celt.

Комментарии:
Если число оставшихся элементов меньше запрошенного, Next возвращает только оставшиеся элементы. Фактическое число элементов передается через *pCeltFetched, если этот параметр не равен NULL.

Пример:
Следующий код реализует IEnumVARIANT::Next для наборов из примера Lines (файл Enumvar.cpp).

STDMETHODIMP
CEnumVariant::Next(ULONG cElements, VARIANT FAR* pvar,
	ULONG FAR* pcElementFetched)
{
	HRESULT hr;
	ULONG l;
	long l1;
	ULONG l2;

	if (pcElementFetched != NULL)
		*pcElementFetched = 0;

	for (l=0; l< cElements; l++)
		Variantlnit(&pvar[l]);

	// Получить следующие cElements элементов.

	for (l1=m_lCurrent, l2=0; l1<(long)(m_lLBound+m_cElements)
		&& l2<cElements; l1++, l2++) 
	{
		hr = SafeArrayGetElement(m_psa, &l1, &pvar[l2]); 
		if (FAILED(hr)) goto error;
	};
	// Возвратить число полученных элементов.
	if (pcElementFetched != NULL)
		*pcElementFetched = l2; 
	m_lCurrent = l1;
	return (l2 < cElements) ? ResultFromScode(S_FALSE) : NOERROR;
error:
	for (l=0; l<cElements; l++)
		VariantClear(&pvar[l]); 
	return hr;
};

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





Letyshops [lifetime]