我们可以在一个if语句中组合两个或多个条件吗? 我知道在C#中我们可以在IF语句中组合两个或多个条件。我们可以在Delphi中做到吗?
我必须检查用户是否为表单中的三个Edit控件输入了值。 感谢所有帮助
答案 0 :(得分:18)
条件陈述的一般形式是:
IF “逻辑表达”然后 ... ELSE ......
“逻辑表达式”是任何布尔表达式。布尔表达式是一个表达式,可以计算为TRUE或FALSE。
可以使用比较运算符和布尔运算符构建布尔表达式。
比较运算符:
= equals
<> not equals
> greater than
>= greater than or equals
< less than
<= less than or equals
设置比较运算符:
= equals
<= returns true, if set1 is a subset of set2
>= returns true, if set1 is a superset of set2
in returns true, if an element is in the set
布尔运算符:
AND logical and
OR logical or
NOT logical not
XOR logical exclusive disjucntion
示例:
IF A = 10 THEN ...
IF A >= B THEN ...
IF C or D THEN ... (Note: C and D have to be logical, i.e. TRUE or FALSE)
IF NOT E THEN ... (Note: E has to be logical, i.e. TRUE or FALSE)
C,D和E可以替换为任何逻辑表达式,例如:
IF (edit1.text = '') OR ( ISEMPTY( edit2.text ) ) THEN ...
IF NOT checkbox1.checked THEN ...
请注意,逻辑表达式可以通过使用布尔运算符从更简单的逻辑表达式构造,例如:
IF ( A = 10 ) AND ( A >= B ) THEN ...
IF NOT ( ( A = 10 ) AND ( A >= B ) ) THEN ...
编写逻辑表达式时常见的错误是没有注意运算符优先级(首先评估哪个运算符)。布尔运算符的优先级高于比较运算符,例如:
IF A = 10 OR A >= B THEN ...
以上是错误的,因为Delphi试图评估
首先是 10 OR A
,而不是
A = 10
。如果A本身不是逻辑表达式,则会发生错误。
解决方案是使用括号,所以上面的IF ...那么......应写成:
IF (A = 10) OR (A >= B) THEN ...
为了检查3个编辑控件,条件语句变为:
IF ( Edit1.text <> '' ) AND ( Edit2.text <> '' ) AND ( Edit3.text <> '' ) THEN ...
注意:稍微偏离主题,但相关。来自Jedi JVCL project的免费组件TJvValidators,TJvValidationSummary和TJvErrorIndicator提供了一个很好的验证机制。
答案 1 :(得分:10)
当然。你可以这样做:
if (A > 7) and (B < 13) or (C in [2, 4, 7]) then
或编辑控件:
if (Edit1.Text <> '') and (Edit2.Text <> '') and (Edit3.Text <> '') then
或者,如果这是你想要的:
if (Edit1.Text = '') or (Edit2.Text = '') or (Edit3.Text = '') then
etc.etc。
实际阅读一本关于Delphi的书可能是有益的,例如Delphi语言指南,它随每个版本的Delphi(在帮助中,参考文献部分)或can be found online一起提供。
对于问题:通常,您可以使用and
,or
和not
组合不同的条件。为避免运算符优先级出现问题,通常应将每个条件放在括号中,如上所述。
答案 2 :(得分:7)
您必须使用And
和Or
运算符组合if sentence
if (Edit1.Text<>'') and (Edit2.Text<>'') and (Edit3.Text<>'') then
答案 3 :(得分:5)
记住表达式从左到右进行评估非常重要。
在这个例子中
if False and SomeFunction() then
不会评估SomeFunction。 如果你转过它们
if SomeFunction() and False then
将评估SomeFunction()。
答案 4 :(得分:0)
但是,如果使用“if not”,那么:
如果不是((edit1.Text ='2')或(edit2.Text ='3'))那么......