Bagikan melalui


IDebugExpressionEvaluator3::Parse2

Mengonversi string ekspresi ke ekspresi yang diurai mengingat penyedia simbol dan alamat bingkai evaluasi.

Sintaks

HRESULT Parse2 (
    string                     upstrExpression,
    enum_PARSEFLAGS            dwFlags,
    uint                       nRadix,
    IDebugSymbolProvider       pSymbolProvider,
    IDebugAddress              pAddress,
    out string                 pbstrError,
    out uint                   pichError,
    out IDebugParsedExpression ppParsedExpression
);

Parameter

upstrExpression
[di] String ekspresi yang akan diurai.

dwFlags
[di] Kumpulan konstanta PARSEFLAGS yang menentukan bagaimana ekspresi akan diurai.

nRadix
[di] Radix yang akan digunakan untuk menafsirkan informasi numerik apa pun.

pSymbolProvider
[di] Antarmuka penyedia simbol.

pAddress
[di] Alamat bingkai evaluasi.

pbstrError
[out] Mengembalikan kesalahan sebagai teks yang dapat dibaca manusia.

pichError
[out] Mengembalikan posisi karakter dari awal kesalahan dalam string ekspresi.

ppParsedExpression
[out] Mengembalikan ekspresi yang diurai dalam objek IDebugParsedExpression .

Tampilkan Nilai

Jika berhasil, mengembalikan S_OK; jika tidak, mengembalikan kode galat.

Keterangan

Metode ini menghasilkan ekspresi yang diurai, bukan nilai aktual. Ekspresi yang diurai siap dievaluasi, yaitu, dikonversi menjadi nilai.

Contoh

Contoh berikut menunjukkan cara menerapkan metode ini untuk objek CEE yang mengekspos antarmuka IDebugExpressionEvaluator3 .

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

Baca juga