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 |