Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Il metodo GetAt recupera il valore in corrispondenza di un particolare indice N-dimensionale dall'interno dell'oggetto indicizzato. Un indicizzatore di N dimensioni in cui N è il valore restituito da GetDimensionality deve essere supportato. Si noti che un oggetto può essere indicizzato in domini diversi in base a tipi diversi , ad esempio indicizzabile tramite ordinali e stringhe. Se l'indice non è compreso nell'intervallo (o non è stato possibile accedervi), il metodo restituirà un errore; In questi casi, tuttavia, l'oggetto di output può comunque essere impostato su un oggetto errore.
Sintassi
HRESULT GetAt(
IModelObject *contextObject,
ULONG64 indexerCount,
IModelObject **indexers,
_COM_Errorptr_ IModelObject **object,
IKeyStore **metadata
);
Parametri
contextObject
L'oggetto istanza (questo puntatore) che viene indicizzato viene passato qui.
indexerCount
Numero di dimensioni in cui viene indicizzato l'oggetto.
indexers
Matrice (ridimensionata in base all'indexerCount) degli indici che indica dove accedere all'interno dell'oggetto istanza.
object
Il valore dell'elemento in corrispondenza degli indici specificati viene restituito qui. Se il metodo ha esito negativo, le informazioni estese sull'errore possono essere restituite qui come oggetto errore.
metadata
I metadati facoltativi sull'elemento indicizzato possono essere restituiti qui.
Valore restituito
Questo metodo restituisce HRESULT che indica l'esito positivo o negativo.
Osservazioni
Implementazione di esempio di :
// Consider that we are pairing this with the same MyObjectIterator class
// shown in the example snippet for IModelIterator::GetNext.
IFACEMETHOD(GetAt)(_In_ IModelObject *pContextObject,
_In_ ULONG64 indexerCount,
_In_reads_(indexerCount) IModelObject **ppIndexers,
_COM_Errorptr_ **ppValue,
_COM_Outptr_opt_result_maybenull_ IKeyStore **ppMetadata)
{
HRESULT hr = S_OK;
*ppValue = nullptr;
if (ppMetadata != nullptr)
{
*ppMetadata = nullptr;
}
if (indexerCount != 1)
{
return E_INVALIDARG;
}
ComPtr<IModelObject> spValue;
ULONG64 numElements;
ComPtr<IModelObject> spNumElements;
hr = pContextObject->GetKeyValue(L"NumElements", &spNumElements, nullptr));
if (SUCCEEDED(hr))
{
VARIANT vtNumElements;
hr = spNumElements->GetIntrinsicValueAs(VT_UI8, &vtNumElements));
if (SUCCEEDED(hr))
{
VARIANT vtIdx;
hr = ppIndexers[0]->GetIntrinsicValueAs(VT_UI8, &vtIdx));
if (SUCCEEDED(hr))
{
if (vtIdx.ullVal >= vtNumElements.ullVal)
{
return E_BOUNDS;
}
VARIANT vtValue;
vtValue.vt = VT_UI8;
vtValue.ullVal = vtIdx.ullVal + 10;
hr = GetManager()->CreateIntrinsicObject(ObjectIntrinsic,
&vtValue,
&spValue);
}
}
}
if (SUCCEEDED(hr))
{
*ppValue = spValue.Detach();
}
return hr;
}
Fabbisogno
Requisito | Valore |
---|---|
intestazione | dbgmodel.h |