共用方式為


IDebugExpressionEvaluator3::Parse2

根據評估框架的符號提供者和位址,將表達式字串轉換成剖析的表達式。

語法

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);
}

另請參閱