106 lines
2.3 KiB
ObjectPascal
106 lines
2.3 KiB
ObjectPascal
unit ExprEvalExampleLogic;
|
|
|
|
interface
|
|
|
|
uses
|
|
SysUtils, Classes, JclExprEval;
|
|
|
|
procedure Init(Evaluator: TEasyEvaluator; FuncList: TStrings);
|
|
function ResultAsText(Evaluator: TEvaluator; const Input: string): string;
|
|
|
|
implementation
|
|
|
|
uses
|
|
JclMath;
|
|
|
|
procedure Init(Evaluator: TEasyEvaluator; FuncList: TStrings);
|
|
begin
|
|
with Evaluator do
|
|
begin
|
|
// Constants
|
|
AddConst('Pi', Pi);
|
|
|
|
// Functions
|
|
AddFunc('LogBase10', LogBase10);
|
|
AddFunc('LogBase2', LogBase2);
|
|
AddFunc('LogBaseN', LogBaseN);
|
|
AddFunc('ArcCos', ArcCos);
|
|
AddFunc('ArcCot', ArcCot);
|
|
AddFunc('ArcCsc', ArcCsc);
|
|
AddFunc('ArcSec', ArcSec);
|
|
AddFunc('ArcSin', ArcSin);
|
|
AddFunc('ArcTan', ArcTan);
|
|
AddFunc('ArcTan2', ArcTan2);
|
|
AddFunc('Cos', Cos);
|
|
AddFunc('Cot', Cot);
|
|
AddFunc('Coversine', Coversine);
|
|
AddFunc('Csc', Csc);
|
|
AddFunc('Exsecans', Exsecans);
|
|
AddFunc('Haversine', Haversine);
|
|
AddFunc('Sec', Sec);
|
|
AddFunc('Sin', Sin);
|
|
AddFunc('Tan', Tan);
|
|
AddFunc('Versine', Versine);
|
|
AddFunc('ArcCosH', ArcCosH);
|
|
AddFunc('ArcCotH', ArcCotH);
|
|
AddFunc('ArcCscH', ArcCscH);
|
|
AddFunc('ArcSecH', ArcSecH);
|
|
AddFunc('ArcSinH', ArcSinH);
|
|
AddFunc('ArcTanH', ArcTanH);
|
|
AddFunc('CosH', CosH);
|
|
AddFunc('CotH', CotH);
|
|
AddFunc('CscH', CscH);
|
|
AddFunc('SecH', SecH);
|
|
AddFunc('SinH', SinH);
|
|
AddFunc('TanH', TanH);
|
|
end;
|
|
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;
|
|
end;
|
|
|
|
function ResultAsText(Evaluator: TEvaluator; const Input: string): string;
|
|
begin
|
|
try
|
|
Result := FloatToStr(Evaluator.Evaluate(Input));
|
|
except
|
|
on E: Exception do
|
|
Result := E.Message;
|
|
end;
|
|
end;
|
|
|
|
|
|
end.
|