Expression Engine
まずはこれを見て!
Bindings の仕組みでなんと式を評価できる。
そう Delphi ならね。
コードは
// uses には System.Bindings.Helper を追加
procedure TfrmCalculator.Calc;
begin
var B := TBindings.CreateExpression([], edtExpression.Text);
try
edtResult.Text := B.Evaluate.GetValue.AsExtended.ToString;
finally
B.Free;
end;
end;
たったこれだけ!
B.Evalute は TValue 型を返すので、あとはよしなに。
ネタ元は
マルコカントゥのブログ
https://blog.marcocantu.com/blog/2021-may-delphi-expression-engine.html
その日本語訳
https://blogs.embarcadero.com/ja/using-delphis-expressions-engine-ja/
オブジェクトを登録すればそのプロパティを使ったりもできるので、Eval といっても差し支えない様な気がする。
おわりに
Eval が使えるとなるとかなり強力な機能と言える。
上手く使えば関数電卓が再現できそう!