インターフェイスを使用してICompiledBinding
単純な式を評価しています。リテラルを使用すると正常に(2*5)+10
動作しますが、コードのようなものをコンパイルしようとすると2*Pi
エラーで失敗します:
EEvaluatorError: Pi が見つかりませんでした
これは私の現在のコードです
{$APPTYPE CONSOLE}
uses
System.Rtti,
System.Bindings.EvalProtocol,
System.Bindings.EvalSys,
System.Bindings.Evaluator,
System.SysUtils;
procedure Test;
Var
RootScope : IScope;
CompiledExpr : ICompiledBinding;
R : TValue;
begin
RootScope:= BasicOperators;
//Compile('(2*5)+10', RootScope); //works
CompiledExpr:= Compile('2*Pi', RootScope);//fails
R:=CompiledExpr.Evaluate(RootScope, nil, nil).GetValue;
if not R.IsEmpty then
Writeln(R.ToString);
end;
begin
try
Test;
except
on E:Exception do
Writeln(E.Classname, ':', E.Message);
end;
Writeln('Press Enter to exit');
Readln;
end.
Pi
では、ICompiledBinding インターフェイスを使用して定数を含む式を評価するにはどうすればよいでしょうか?