【发布时间】:2013-08-14 18:54:48
【问题描述】:
在 Delphi XE 中,我有一个例程可以将一些复杂的公式分解为二进制公式结果,如下所示:
(1&((1|0)|1)&1)
由于我的应用程序在 SQL Server 上,我可以轻松地执行 SELECT (1&((1|0)|1)&1) As Result,SQL Server 将评估逻辑以给出 1 或 0 结果。
我似乎找不到原生的 Delphi 方法来获取二进制公式的字符串表示并对其进行评估。
我查看了添加到 XE 中的 Live Bindings Evaluators,但任何尝试使用 and/or 运算符都会引发解析器错误,因此我认为这更像是一个数学过程。
我还查看了一些解析器,但似乎没有一个真正跳出来。
那么我该如何做类似的事情:
iSomeInt := Evaluate('(1&((1|0)|1)&1)');
顺便说一句.. 我可以完全修改公式并使用和/或代替 &|.. 这只是为了使它与 SQL Server 一起工作。
【问题讨论】:
-
JCL TEvaluator 看起来不错。参考这个之前的SO问题stackoverflow.com/questions/13592136/…
-
JCL 表达式求值器确实不错。尽管它对小数分隔符的处理很差,并且缺少强力运算符。我已经在自己的分支中修复了这两个遗漏,但是我可以说服任何 JEDI 开发人员做必要的事情吗?我能不能!当开源项目死亡时令人沮丧。而且似乎没有明显的方法可以让它恢复生机。
标签: string delphi binary evaluation livebindings