有谁知道TEvaluator
Delphi 7 的 JCL 类中包含哪些预定义函数(例如 ABS 函数)?
2 回答
不包含任何标准功能Math.pas
。默认评估解析器中实现的所有内容是运算符or
, xor
, and
, not
, mod
, +
, -
, /
, *
, <
, >
, <=
, >=
, =
, div
, cmp
, bor
, bxor
, band
, bnot
, shl
, 和shr
. (我在快速检查源代码时发现了很多,根据@David 的评论我错过了一些。)
您可以很容易地向评估器添加功能(包括那些属于 Delphi RTL 的功能)。它甚至显示在演示中,它添加了来自 JCL 单元之一的功能。
JCL\examples\common\expreval
默认情况下,在文件夹中找到的 JCL 评估程序示例 (ExprEvalExample.dpr)将 a作为参数传递TComboBox.Items
给Init
函数 in ,该参数由以下代码填充(在同一例程中给出函数),函数来自:ExprEvalExampleLogic.pas
FuncList
TEasyEvaluator
JclMath.pas
with FuncList do
begin
Add('LogBase10');
Add('LogBase2');
Add('LogBaseN');
Add('ArcCos');
Add('ArcCot');
Add('ArcCsc');
Add('ArcSec');
Add('ArcSin');
Add('ArcTan');
Add('ArcTan2');
Add('Cos');
Add('Cot');
Add('Coversine');
Add('Csc');
Add('Exsecans');
Add('Haversine');
Add('Sec');
Add('Sin');
Add('Tan');
Add('Versine');
Add('ArcCosH');
Add('ArcCotH');
Add('ArcCscH');
Add('ArcSecH');
Add('ArcSinH');
Add('ArcTanH');
Add('CosH');
Add('CotH');
Add('CscH');
Add('SecH');
Add('SinH');
Add('TanH');
end;
这些将是演示应用程序中支持的功能。您可以以类似的方式添加自己的。
不包括预定义的功能。有标准的算术运算符:+、-、*、div 和 mod。还有所有标准的逻辑和位运算符。但是没有什么像 abs、sin、exp、log 等。你必须把它们放在你自己里面。添加功能非常容易,我认为这是一个很好的设计,可以让您准确选择您的评估者支持的内容。