有没有人知道哪些预定义函数(例如ABS函数)包含在Delphi 7的TEvaluator
JCL类中?
答案 0 :(得分:4)
Math.pas
中没有标准功能。默认评估解析器中实现的所有操作都是运算符or
,xor
,and
,not
,mod
,+
,{{ 1}},-
,/
,*
,<
,>
,<=
,>=
,{{1} },=
,div
,cmp
,bor
,bxor
,band
和bnot
。 (根据@ David的评论,我在快速查看来源时发现了很多,还有一些我错过了。)
您可以非常轻松地向评估者添加函数(包括属于Delphi RTL的函数)。它甚至在演示中显示,它添加了一个JCL单元的功能。
默认情况下,shl
文件夹中找到的JCL评估程序示例(ExprEvalExample.dpr)将shr
传递给JCL\examples\common\expreval
中的TComboBox.Items
函数作为Init
参数,由ExprEvalExampleLogic.pas
的函数填充此代码(FuncList
在同一例程中赋予函数):
TEasyEvaluator
这些将是演示应用程序支持的功能。您可以以类似的方式添加自己的。
答案 1 :(得分:3)
不包含预定义的功能。有标准算术运算符:+, - ,*,div和mod。并且有所有标准的逻辑和按位运算符。但是没有像abs,sin,exp,log等等。你必须把它们放在自己身上。添加函数非常简单,我认为这是一个很好的设计,让您可以准确选择评估者支持的内容。