Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Önemli
Visual Studio 2015'te, ifade değerlendiricileri uygulama yöntemi kullanım dışıdır. CLR ifade değerlendiricilerini uygulama hakkında bilgi için bkz . CLR ifade değerlendiricileri ve Yönetilen ifade değerlendirici Örneği.
Watch penceresi ifadesi için Visual Studio, IDebugExpression2 nesnesi oluşturmak için ParseText'i çağırır. IDebugExpressionContext2::ParseTextbir ifade değerlendiricisi (EE) örneği oluşturur ve IDebugParsedExpression nesnesi almak için Parse'i çağırır.
aşağıdaki IDebugExpressionEvaluator::Parse görevleri gerçekleştirir:
[Yalnızca C++] İfadeyi ayrıştırarak hataları arar.
Arabirimi çalıştıran
IDebugParsedExpressionve ayrıştırılacak ifadeyi sınıfında depolayan bir sınıfın örneğini oluşturur (bu örnekte adıCParsedExpressionverilir).Nesneden
IDebugParsedExpressionarabirimi döndürürCParsedExpression.
Dekont
Ardından gelen örneklerde ve MyCEE örneğinde ifade değerlendiricisi ayrıştırma işlemini değerlendirmeden ayırmaz.
Yönetilen kod
Aşağıdaki kod, yönetilen kodda uygulamasını IDebugExpressionEvaluator::Parse gösterir. Yöntemin bu sürümü ayrıştırma kodunun da aynı anda değerlendirdiği için EvaluateSync'e ayrıştırma işlemini saptırıyor (bkz. Watch ifadesini değerlendirme).
namespace EEMC
{
public class CParsedExpression : IDebugParsedExpression
{
public HRESULT Parse(
string expression,
uint parseFlags,
uint radix,
out string errorMessage,
out uint errorPosition,
out IDebugParsedExpression parsedExpression)
{
errorMessage = "";
errorPosition = 0;
parsedExpression =
new CParsedExpression(parseFlags, radix, expression);
return COM.S_OK;
}
}
}
Yönetilmeyen kod
Aşağıdaki kod, yönetilmeyen kodda uygulamasıdır IDebugExpressionEvaluator::Parse . Bu yöntem, Parseifadeyi ayrıştırmak ve hataları denetlemek için yardımcı işlevini çağırır, ancak bu yöntem sonuçta elde edilen değeri yoksayar. Resmi değerlendirme, değerlendirilirken ifadenin ayrıştırıldığı EvaluateSync'e ertelenmiş olur (bkz. İzleme ifadesini değerlendirme).
STDMETHODIMP CExpressionEvaluator::Parse(
in LPCOLESTR pszExpression,
in PARSEFLAGS flags,
in UINT radix,
out BSTR *pbstrErrorMessages,
inout UINT *perrorCount,
out IDebugParsedExpression **ppparsedExpression
)
{
if (pbstrErrorMessages == NULL)
return E_INVALIDARG;
else
*pbstrErrormessages = 0;
if (pparsedExpression == NULL)
return E_INVALIDARG;
else
*pparsedExpression = 0;
if (perrorCount == NULL)
return E_INVALIDARG;
HRESULT hr;
// Look for errors in the expression but ignore results
hr = ::Parse( pszExpression, pbstrErrorMessages );
if (hr != S_OK)
return hr;
CParsedExpression* pparsedExpr = new CParsedExpression( radix, flags, pszExpression );
if (!pparsedExpr)
return E_OUTOFMEMORY;
hr = pparsedExpr->QueryInterface( IID_IDebugParsedExpression,
reinterpret_cast<void**>(ppparsedExpression) );
pparsedExpr->Release();
return hr;
}