evaluation.shtml
来自「mfc资源大全包含MFC编程各个方面的源码」· SHTML 代码 · 共 202 行
SHTML
202 行
<HTML>
<!-- Header information-->
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<!-- add your name in the CONTENT field below -->
<META NAME="Author" CONTENT="Scott Miller">
<TITLE>Miscellaneous - In-Program Evaluation</TITLE>
</HEAD>
<!-- Set background properties -->
<body background="/fancyhome/back.gif" bgcolor="#FFFFFF">
<!-- A word from our sponsors... -->
<table WIDTH="100%">
<tr WIDTH="100%"><td align=center><!--#exec cgi="/cgi/ads.cgi"--><td></tr>
</table>
<CENTER><H3><FONT COLOR="#AOAO99">
In-Program Evaluation
</FONT></H3></CENTER>
<HR>
<!-- Author and contact details -->
This article was contributed by <!-- Author Email --><a href="mailto:Joachim.Raidl@iname.com">Joachim Raidl</A>.
<!-- Sample image - gif or jpg -->
<P><IMG SRC="evaluation.gif" >
<!-- Text / source code -->
<p>In my projects I often need to evaluate expressions. So I
created a class that provides evaluation of expressions with the
posibility to declare variables and easy functions. For this
article I include the XEvaluate-class in a 'calculator'-dialog,
but normaly, I use the class in my application like this: XString
erg = Evaluate("1+2*sqr(3)").</p>
<p>!!! The XString-class that XEvaluate uses, was also
contributed at codeguru.</p>
<p>You can use external variables in a XDoubleMap. This typedef
is allready defined in XEvaluate.h (typedef CMap<CString,
LPCTSTR, double, double> XDoubleMap;):</p>
<pre><font color="#990000"> XDoubleMap var;
var["alpha"] = 10;
var["beta"] = 20;
var["test"] = 1.234;
double erg = dtoa(Evaluate("alpha+beta", var));
</font></pre>
<p>It's possible to use userdefined functions with one argument
(this argument has to be 'x')</p>
<pre><font color="#990000"> Evaluate("f:=sin(x)+cos(x)");
double erg = dtoa(Evaluate("f(pi/2)"));
</font></pre>
<p>You can also call Evaluate with more than one expression, if
you divide the expressions by a semikolon:</p>
<pre><font color="#990000"> double erg = dtoa(Evaluate("a=10;b=20;c=a+b");
</font></pre>
<p>The following functions and operations are included in
XEvaluate:</p>
<table border="1" cellspacing="1" width="100%">
<tr>
<td align="center">sin</td>
<td align="center">cos</td>
<td align="center">tan</td>
<td align="center"> </td>
<td align="center"> </td>
<td align="center"> </td>
<td>trigonometric functions</td>
</tr>
<tr>
<td align="center">asin</td>
<td align="center">acos</td>
<td align="center">atan</td>
<td align="center"> </td>
<td align="center"> </td>
<td align="center"> </td>
<td>inverse trigonometric functions</td>
</tr>
<tr>
<td align="center">rad</td>
<td align="center">deg</td>
<td align="center">gon</td>
<td align="center"> </td>
<td align="center"> </td>
<td align="center"> </td>
<td>trigonometric calculation type</td>
</tr>
<tr>
<td align="center">pow</td>
<td align="center">sqr</td>
<td align="center">sqrt</td>
<td align="center">exp</td>
<td align="center">log</td>
<td align="center">log10</td>
<td>power, square, squareroot, exp, natural log, tenth
log</td>
</tr>
<tr>
<td align="center">abs</td>
<td align="center">int</td>
<td align="center">fract</td>
<td align="center">fak</td>
<td align="center">cube</td>
<td align="center"> </td>
<td>absolute, integer part, factional part, n!, cube</td>
</tr>
<tr>
<td align="center">dec</td>
<td align="center">hex</td>
<td align="center">bin</td>
<td align="center">char</td>
<td align="center"> </td>
<td align="center"> </td>
<td>outputtype</td>
</tr>
<tr>
<td align="center">fix</td>
<td align="center"> </td>
<td align="center"> </td>
<td align="center"> </td>
<td align="center"> </td>
<td align="center"> </td>
<td>set the decimal digits</td>
</tr>
<tr>
<td align="center">+</td>
<td align="center">-</td>
<td align="center">*</td>
<td align="center">/</td>
<td align="center"> </td>
<td align="center"> </td>
<td>add, sub, mul, div</td>
</tr>
<tr>
<td align="center">%</td>
<td align="center">&</td>
<td align="center">|</td>
<td align="center">^</td>
<td align="center">!</td>
<td align="center">~</td>
<td>modulo, binary and, or, xor, not, binary not</td>
</tr>
<tr>
<td align="center"><</td>
<td align="center">></td>
<td align="center"><=</td>
<td align="center">>=</td>
<td align="center">==</td>
<td align="center">!=</td>
<td>less, greater, less or equal, greater or equal,
equal, not equal</td>
</tr>
<tr>
<td align="center">=</td>
<td align="center">+=</td>
<td align="center">-=</td>
<td align="center">*=</td>
<td align="center">/=</td>
<td align="center"> </td>
<td>variable setting</td>
</tr>
<tr>
<td align="center">@</td>
<td align="center"> </td>
<td align="center"> </td>
<td align="center"> </td>
<td align="center"> </td>
<td align="center"> </td>
<td>old value (result of the last calculation)</td>
</tr>
<tr>
<td align="center">?</td>
<td align="center"> </td>
<td align="center"> </td>
<td align="center"> </td>
<td align="center"> </td>
<td align="center"> </td>
<td>help (lists all functions)</td>
</tr>
<tr>
<td align="center">#</td>
<td align="center"> </td>
<td align="center"> </td>
<td align="center"> </td>
<td align="center"> </td>
<td align="center"> </td>
<td>reset (delete all functions and variables)</td>
</tr>
<tr>
<td align="center">
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?