Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Convertit une chaîne d’expression en expression analysée en fonction du fournisseur de symboles et de l’adresse du cadre d’évaluation.
Syntaxe
HRESULT Parse2 (
string upstrExpression,
enum_PARSEFLAGS dwFlags,
uint nRadix,
IDebugSymbolProvider pSymbolProvider,
IDebugAddress pAddress,
out string pbstrError,
out uint pichError,
out IDebugParsedExpression ppParsedExpression
);
Paramètres
upstrExpression
[in] Chaîne d’expression à analyser.
dwFlags
[in] Collection de constantes PARSEFLAGS qui déterminent la façon dont l’expression doit être analysée.
nRadix
[in] Radix à utiliser pour interpréter toutes les informations numériques.
pSymbolProvider
[in] Interface du fournisseur de symboles.
pAddress
[in] Adresse du cadre d’évaluation.
pbstrError
[out] Retourne l’erreur en tant que texte lisible par l’homme.
pichError
[out] Retourne la position de caractère du début de l’erreur dans la chaîne d’expression.
ppParsedExpression
[out] Renvoie l’expression analysée dans un objet IDebugParsedExpression .
Valeur de retour
En cas de réussite, retourne S_OK , sinon, retourne un code d'erreur.
Notes
Cette méthode produit une expression analysée, et non une valeur réelle. Une expression analysée est prête à être évaluée, c’est-à-dire convertie en valeur.
Exemple
L’exemple suivant montre comment implémenter cette méthode pour un objet CEE qui expose l’interface 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);
}