根據評估框架的符號提供者和位址,將表達式字串轉換成剖析的表達式。
語法
HRESULT Parse2 (
string upstrExpression,
enum_PARSEFLAGS dwFlags,
uint nRadix,
IDebugSymbolProvider pSymbolProvider,
IDebugAddress pAddress,
out string pbstrError,
out uint pichError,
out IDebugParsedExpression ppParsedExpression
);
參數
upstrExpression
[in]要剖析的表達式字串。
dwFlags
[in]PARSEFLAGS 常數的集合,決定要如何剖析表達式。
nRadix
[in]要用來解譯任何數值資訊的基數。
pSymbolProvider
[in]符號提供者的介面。
pAddress
[in]評估框架的位址。
pbstrError
[out]將錯誤傳回為人類可讀取的文字。
pichError
[out]傳回表達式字串中錯誤開頭的字元位置。
ppParsedExpression
[out]傳回 IDebugParsedExpression 物件中的剖析表達式。
傳回值
如果成功,則會傳回 S_OK;否則,會傳回錯誤碼。
備註
這個方法會產生剖析的表達式,而不是實際值。 剖析的表達式已準備好進行評估,也就是轉換成值。
範例
下列範例示範如何為公開IDebugExpressionEvaluator3 介面的 CEE 物件實作這個方法。
HRESULT CEE::Parse2 ( LPCOLESTR in_szExprText,
PARSEFLAGS in_FLAGS,
UINT in_RADIX,
IDebugSymbolProvider *pSymbolProvider,
IDebugAddress *pAddress,
BSTR* out_pbstrError,
UINT* inout_pichError,
IDebugParsedExpression** out_ppParsedExpression )
{
// precondition
REQUIRE( NULL != in_szExprText );
//REQUIRE( NULL != out_pbstrError );
REQUIRE( NULL != inout_pichError );
REQUIRE( NULL != out_ppParsedExpression );
if (NULL == in_szExprText)
return E_INVALIDARG;
if (NULL == inout_pichError)
return E_POINTER;
if (NULL == out_ppParsedExpression)
return E_POINTER;
if (out_pbstrError)
*out_pbstrError = NULL;
*out_ppParsedExpression = NULL;
INVARIANT( this );
if (!this->ClassInvariant())
return E_UNEXPECTED;
// function body
EEDomain::fParseExpression DomainVal =
{
this, // CEE*
in_szExprText, // LPCOLESTR
in_FLAGS, // EVALFLAGS
in_RADIX, // RADIX
out_pbstrError, // BSTR*
inout_pichError, // UINT*
pSymbolProvider,
out_ppParsedExpression // Output
};
return (*m_LanguageSpecificUseCases.pfParseExpression)(DomainVal);
}