IEnumVARIANT::Next

celt, rgvar, pceltFetched)
unsigned long
celt
VARIANT FAR* rgvar
unsigned long FAR* pceltFetched

Attempts to get the next celt items in the enumeration sequence and return them through the array pointed to by rgvar.

Parameters

celt

The number of elements to be returned.

rgvar

An array of at least size celt in which the elements are to be returned.

pceltFetched

Pointer to the number of elements returned in rgvar, or NULL.

Return Value

The SCODE obtained from the returned HRESULT is one of the following:

SCODE
Meaning
S_OK
The number of elements returned is celt.
S_FALSE
The number of elements returned is less than celt.

Comments

If fewer than the requested number of elements remain in the sequence, return only the remaining elements; the actual number of elements returned is passed through *pceltFetched (unless it is NULL).

Example

The following code implements IEnumVariant::Next for collections in the Lines sample (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++)

VariantInit(&pvar[l]);

// Retrieve the next cElements elements.

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;

}

// Set count of elements retrieved

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;

}

Software for developers
Delphi Components
.Net Components
Software for Android Developers
More information resources
MegaDetailed.Net
Unix Manual Pages
Delphi Examples
Databases for Amazon shops developers
Amazon Categories Database
Browse Nodes Database