4

有谁知道TEvaluatorDelphi 7 的 JCL 类中包含哪些预定义函数(例如 ABS 函数)?

4

2 回答 2

4

不包含任何标准功能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.ItemsInit函数 in ,该参数由以下代码填充(在同一例程中给出函数),函数来自:ExprEvalExampleLogic.pasFuncListTEasyEvaluatorJclMath.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;

这些将是演示应用程序中支持的功能。您可以以类似的方式添加自己的。

于 2012-11-27T20:36:33.677 回答
3

不包括预定义的功能。有标准的算术运算符:+、-、*、div 和 mod。还有所有标准的逻辑和位运算符。但是没有什么像 abs、sin、exp、log 等。你必须把它们放在你自己里面。添加功能非常容易,我认为这是一个很好的设计,可以让您准确选择您的评估者支持的内容。

于 2012-11-27T20:10:52.480 回答