📄 addvariabledlg.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 + -