我们可以在一个if语句中组合两个或多个条件吗?我知道在C#中我们可以在IF语句中组合两个或多个条件.我们可以在Delphi中做到吗?
我必须检查用户是否为表单中的三个Edit控件输入了值.谢谢你的帮助
Hen*_*dra 18
条件陈述的一般形式是:
IF " 逻辑表达式 " THEN ... ELSE ...
该"逻辑表达式"是任何布尔表达式.布尔表达式是一个表达式,可以计算为TRUE或FALSE.
可以使用比较运算符和布尔运算符构造布尔表达式.
比较运算符:
= equals
<> not equals
> greater than
>= greater than or equals
< less than
<= less than or equals
Run Code Online (Sandbox Code Playgroud)
设置比较运算符:
= 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
Run Code Online (Sandbox Code Playgroud)
布尔运算符:
AND logical and
OR logical or
NOT logical not
XOR logical exclusive disjucntion
Run Code Online (Sandbox Code Playgroud)
例子:
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)
Run Code Online (Sandbox Code Playgroud)
C,D和E可以替换为任何逻辑表达式,例如:
IF (edit1.text = '') OR ( ISEMPTY( edit2.text ) ) THEN ...
IF NOT checkbox1.checked THEN ...
Run Code Online (Sandbox Code Playgroud)
请注意,逻辑表达式可以通过使用布尔运算符从更简单的逻辑表达式构造,例如:
IF ( A = 10 ) AND ( A >= B ) THEN ...
IF NOT ( ( A = 10 ) AND ( A >= B ) ) THEN ...
Run Code Online (Sandbox Code Playgroud)
编写逻辑表达式时常见的错误是没有注意运算符优先级(首先评估哪个运算符).布尔运算符的优先级高于比较运算符,例如:
IF A = 10 OR A >= B THEN ...
Run Code Online (Sandbox Code Playgroud)
以上是错误的,因为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项目的免费组件TJvValidators,TJvValidationSummary和TJvErrorIndicator 提供了一个很好的验证机制.
Rud*_*uis 10
当然.你可以这样做:
if (A > 7) and (B < 13) or (C in [2, 4, 7]) then
Run Code Online (Sandbox Code Playgroud)
或者对于编辑控件:
if (Edit1.Text <> '') and (Edit2.Text <> '') and (Edit3.Text <> '') then
Run Code Online (Sandbox Code Playgroud)
或者,如果这是你想要的:
if (Edit1.Text = '') or (Edit2.Text = '') or (Edit3.Text = '') then
Run Code Online (Sandbox Code Playgroud)
etc.etc.
实际阅读一本关于Delphi的书可能是有益的,例如Delphi语言指南,它随每个版本的Delphi一起提供(在帮助中,在参考文献部分中),或者可以在网上找到.
对于这样的问题:在一般情况下,你可以结合使用不同的条件and,or和not.为避免运算符优先级问题,通常应将每个条件放在括号中,如上所述.
您必须使用And和Or运算符组合if语句中的条件
if (Edit1.Text<>'') and (Edit2.Text<>'') and (Edit3.Text<>'') then
Run Code Online (Sandbox Code Playgroud)
记住表达式从左到右进行评估非常重要.
在这个例子中
if False and SomeFunction() then
Run Code Online (Sandbox Code Playgroud)
SomeFunction不会被评估.如果你转过身来
if SomeFunction() and False then
Run Code Online (Sandbox Code Playgroud)
将评估SomeFunction().