在Delphi中使用控制标题/文本而不是关键字或运算符

时间:2014-07-05 15:45:20

标签: delphi

有可能吗?

实施例: ComboBox1有两个项目(或,和)。 ComboBox2有两个项目(<,>)。

Var
  Int1, Int2: Integer;

Begin
  if (Int1 ComboBox2.Text 10) ComboBox1.Text (Int2 ComboBox2.Text 12) then bla bla;

2 个答案:

答案 0 :(得分:1)

你基本上想从组合框的内容构建一个Pascal语句(假设用户选择了),然后执行它。

任何Pascal脚本工具mentioned in this Stackoverflow post都适用于此。

但是对于你不需要的非常简单的例子,你可以检查ComboBoxx.Text or better ComboBox.ItemIndex返回什么,然后在设计时编写Delphi代码。

答案 1 :(得分:1)

您需要了解的第一件事是编译器如何处理Delphi表达式。关键是表达式在编译时被解析。通过解析,我们指的是将表达式分解为其组成部分的操作:操作和关联的操作数。

现在,编译时解析确定了操作。它们必须在编译时知道。操作数可以是变量,因此仅在运行时已知。

例如,请考虑以下表达式:

x + 1

这里的操作是补充。两个操作数是变量x和常量1。除了x的值之外,在编译时一切都是已知的。

解析行为将表达式分解为一种形式,无需进一步的结构分析即可对其进行评估。所需要的只是未知变量的值。

您希望编写表达式,直到运行时才能知道操作。这与表达式的编译时解析不兼容。 Delphi编译器,因为它在编译时解析表达式,因此不能做你所希望的。

相反,您需要运行时解析表达式。您可以编写自己的解析器/评估程序。您可以使用Delphi的LiveBindings表达式评估程序。您可以使用第三方表达式求值程序,例如JCL库。