2011-10-18 24 views
7

以下if语句是否可以转换为case语句?我如何测试一个值是否在“case”语句而不是“if”语句的范围内?

if (Number >= 5) and (Number <= 10) then 
    lblAnswer.Caption := 'in range' 
else 
    lblAnswer.Caption := 'out of range'; 

我的回答:

是的,它可以

case (number >= 5) and (Number <= 10) of 
    lblAnswer.Caption := 'in range'; 
    lblAnswer.Caption := 'out of range'; 
end; 

这是正确的吗?

+4

你为什么要这么做?对于这样的表达式,“if ... then”就是更清晰,更快捷的方式。这里没有兴趣使用'case'。 –

+1

备用语句:if([5..10]中的数字)then .. else .. –

+2

InRange()用于极限不恒定或超出设定范围时。 –

回答

25

如果数有一定的整数数据类型,则:

case number of 
5 .. 10: lblAnswer.Caption := 'in range'; 
else  lblAnswer.Caption := 'out of range'; 
end; 
+0

thx所以我不得不忽略长代码...只是去数字alrite现在有意义thx很多 – user1000441

+4

当然这只会在数字是一个整数而不是浮点类型时才起作用。 –

+1

@ user1000441如果此答案解决了您的问题,则应将其标记为“已接受答案”,以便其他人知道您的问题已解决。 – HpTerm

6

小幅盘整:

case (number >= 5) and (Number <= 10) of 
    true:lblAnswer.Caption := 'in range'; 
    false:lblAnswer.Caption := 'out of range'; 
end; 
+3

+1这是使用'case'对其进行编码的正确方法,但老实说,在这里使用'case'而不是'if ... then'语句没有兴趣。 –

+0

0_o确定女巫码是否正确? – user1000441

+0

@peter,这里的代码是正确的。但阿尔诺表示,如果这样的话更合适。 –

-1
Function InRange (Lo,Hi,Val : Integer) : Boolean; 
Begin 
Result := (Val>=Lo)And(Val<=Hi); 
End;