⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 addvariabledlg.cpp

📁 超强函数计算器功能,有变数功能可以进行复杂计算功能
💻 CPP
字号:
// AddVariableDlg.cpp : implementation file
//

#include "stdafx.h"
#include "calculator.h"
#include "AddVariableDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CAddVariableDlg dialog


CAddVariableDlg::CAddVariableDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CAddVariableDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CAddVariableDlg)
	m_strVarName = _T("");
	m_strVarValue = _T("");
	//}}AFX_DATA_INIT

	m_pParser = NULL;
}


void CAddVariableDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CAddVariableDlg)
	DDX_Text(pDX, IDC_EDIT_VARNAME, m_strVarName);
	DDV_MaxChars(pDX, m_strVarName, 128);
	DDX_Text(pDX, IDC_EDIT_VARVALUE, m_strVarValue);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CAddVariableDlg, CDialog)
	//{{AFX_MSG_MAP(CAddVariableDlg)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CAddVariableDlg message handlers

void CAddVariableDlg::OnOK() 
{
	if(m_pParser == NULL)
		return;

	UpdateData();
	m_strVarName.TrimRight();
	m_strVarName.TrimLeft();

	if(m_strVarName.IsEmpty())
	{
		AfxMessageBox("Variable name is empty.");
		return;
	}

	LPCSTR szName = m_strVarName;
	BOOL bValidName = (*szName >= 'A' && *szName <= 'Z' || *szName >= 'a' && *szName <= 'z' || *szName == '_');
	szName++;
	while(*szName != '\0' && bValidName)
	{
		if(*szName >= 'A' && *szName <= 'Z' || *szName >= 'a' && *szName <= 'z' || *szName >= '0' && *szName <= '9' || *szName == '_')
			szName++;
		else
			bValidName = FALSE;
	}

	if(!bValidName)
	{
		AfxMessageBox("Variable name is invalid.");
		return;
	}
	
	VARIANT* pvarResult = NULL;

	try
	{
		m_pParser->Parse(m_strVarValue);
		pvarResult = m_pParser->Execute();

	}
	catch(CALXParserException* e)
	{
		e->ReportError();
		e->Delete();
		return;
	}
	catch(CException* e)
	{
		e->ReportError();
		e->Delete();
		return;
	}

	if(V_VT(pvarResult) != VT_R8 && V_VT(pvarResult) != VT_BSTR && V_VT(pvarResult) != VT_DATE && V_VT(pvarResult) != VT_BOOL)
	{
		AfxMessageBox("Variable value is invalid.");
		return;
	}

	COleVariant varValue;
	varValue = *pvarResult;

	if(!m_pParser->AddVariable(m_strVarName, varValue))
	{
		AfxMessageBox("The variable is not added. May be variable name is exist.");
		return;
	}

	CDialog::OnOK();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -