/jcl/examples/common/expreval/ExprEvalExampleLogic.pas

https://github.com/the-Arioch/jcl · Pascal · 105 lines · 93 code · 10 blank · 2 comment · 0 complexity · fe7747b0693df96fa0f01326a2cc72ec MD5 · raw file

  1. unit ExprEvalExampleLogic;
  2. interface
  3. uses
  4. SysUtils, Classes, JclExprEval;
  5. procedure Init(Evaluator: TEasyEvaluator; FuncList: TStrings);
  6. function ResultAsText(Evaluator: TEvaluator; const Input: string): string;
  7. implementation
  8. uses
  9. JclMath;
  10. procedure Init(Evaluator: TEasyEvaluator; FuncList: TStrings);
  11. begin
  12. with Evaluator do
  13. begin
  14. // Constants
  15. AddConst('Pi', Pi);
  16. // Functions
  17. AddFunc('LogBase10', LogBase10);
  18. AddFunc('LogBase2', LogBase2);
  19. AddFunc('LogBaseN', LogBaseN);
  20. AddFunc('ArcCos', ArcCos);
  21. AddFunc('ArcCot', ArcCot);
  22. AddFunc('ArcCsc', ArcCsc);
  23. AddFunc('ArcSec', ArcSec);
  24. AddFunc('ArcSin', ArcSin);
  25. AddFunc('ArcTan', ArcTan);
  26. AddFunc('ArcTan2', ArcTan2);
  27. AddFunc('Cos', Cos);
  28. AddFunc('Cot', Cot);
  29. AddFunc('Coversine', Coversine);
  30. AddFunc('Csc', Csc);
  31. AddFunc('Exsecans', Exsecans);
  32. AddFunc('Haversine', Haversine);
  33. AddFunc('Sec', Sec);
  34. AddFunc('Sin', Sin);
  35. AddFunc('Tan', Tan);
  36. AddFunc('Versine', Versine);
  37. AddFunc('ArcCosH', ArcCosH);
  38. AddFunc('ArcCotH', ArcCotH);
  39. AddFunc('ArcCscH', ArcCscH);
  40. AddFunc('ArcSecH', ArcSecH);
  41. AddFunc('ArcSinH', ArcSinH);
  42. AddFunc('ArcTanH', ArcTanH);
  43. AddFunc('CosH', CosH);
  44. AddFunc('CotH', CotH);
  45. AddFunc('CscH', CscH);
  46. AddFunc('SecH', SecH);
  47. AddFunc('SinH', SinH);
  48. AddFunc('TanH', TanH);
  49. end;
  50. with FuncList do
  51. begin
  52. Add('LogBase10');
  53. Add('LogBase2');
  54. Add('LogBaseN');
  55. Add('ArcCos');
  56. Add('ArcCot');
  57. Add('ArcCsc');
  58. Add('ArcSec');
  59. Add('ArcSin');
  60. Add('ArcTan');
  61. Add('ArcTan2');
  62. Add('Cos');
  63. Add('Cot');
  64. Add('Coversine');
  65. Add('Csc');
  66. Add('Exsecans');
  67. Add('Haversine');
  68. Add('Sec');
  69. Add('Sin');
  70. Add('Tan');
  71. Add('Versine');
  72. Add('ArcCosH');
  73. Add('ArcCotH');
  74. Add('ArcCscH');
  75. Add('ArcSecH');
  76. Add('ArcSinH');
  77. Add('ArcTanH');
  78. Add('CosH');
  79. Add('CotH');
  80. Add('CscH');
  81. Add('SecH');
  82. Add('SinH');
  83. Add('TanH');
  84. end;
  85. end;
  86. function ResultAsText(Evaluator: TEvaluator; const Input: string): string;
  87. begin
  88. try
  89. Result := FloatToStr(Evaluator.Evaluate(Input));
  90. except
  91. on E: Exception do
  92. Result := E.Message;
  93. end;
  94. end;
  95. end.