IIndexableConcept::GetAt 方法 (dbgmodel.h)
GetAt 方法會從索引物件內擷取特定 N 維索引的值。 N 維度的索引器,其中 N 是必須支援從 GetDimensionality 傳回的值。 請注意,物件可以透過不同類型在不同的網域中編製索引(例如:可透過序數和字串編製索引)。 如果索引超出範圍(或無法存取),方法會傳回失敗;不過,在這種情況下,輸出物件可能仍會設定為錯誤物件。
語法
HRESULT GetAt(
IModelObject *contextObject,
ULONG64 indexerCount,
IModelObject **indexers,
_COM_Errorptr_ IModelObject **object,
IKeyStore **metadata
);
參數
contextObject
正在編製索引的實例物件(此指標)會在這裡傳遞。
indexerCount
物件要編製索引的維度數目。
indexers
索引的陣列(根據 indexerCount 來重設大小),指出實例物件內要存取的位置。
object
此處會傳回位於指定索引處的專案值。 如果方法失敗,可能會在這裡以錯誤物件的形式傳回擴充錯誤資訊。
metadata
您可以在這裏傳回有關索引元素的選擇性元數據。
傳回值
此方法會傳回 HRESULT,指出成功或失敗。
言論
範例實作:
// 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;
}
要求
要求 | 價值 |
---|---|
標頭 | dbgmodel.h |