2011-10-18 13 views
7

Câu lệnh if sau đây có thể được chuyển thành câu lệnh trường hợp không?Làm cách nào để kiểm tra giá trị nằm trong phạm vi có tuyên bố "trường hợp" thay vì câu lệnh "if"?

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

trả lời của tôi:

Có nó có thể

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

Đây có phải là đúng?

+4

Tại sao bạn muốn làm điều đó? Đối với các biểu thức như vậy, một 'if… then' chỉ là cách làm rõ hơn và nhanh hơn. Không quan tâm đến việc sử dụng 'trường hợp' ở đây. –

+1

Một câu lệnh thay thế: nếu (số trong [5..10]) thì .. khác .. –

+2

InRange() cho khi giới hạn không phải là hằng số hoặc ngoài phạm vi đã đặt. –

Trả lời

25

Nếu Số có một số kiểu dữ liệu số nguyên, sau đó:

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

thx vì vậy tôi đã phải bỏ qua đoạn mã dài ... và chỉ cần đi đến số có nghĩa là bây giờ thx rất nhiều – user1000441

+4

Tất nhiên điều này sẽ chỉ hoạt động nếu số là Số nguyên và không phải là loại dấu phẩy động. –

+1

@ user1000441 nếu câu trả lời này giải quyết được vấn đề của bạn, bạn nên đánh dấu nó là "câu trả lời được chấp nhận" để người khác biết vấn đề của bạn được giải quyết. – HpTerm

6

Một sự điều chỉnh nhỏ:

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

+1 Đây là cách mã hóa chính xác nó bằng cách sử dụng 'case' nhưng thực sự không có lợi ích khi sử dụng' case' ở đây thay vì câu lệnh 'if .. then'. –

+0

0_o mã phù thủy ok là chính xác? – user1000441

+0

@peter, mã này ở đây là chính xác. Nhưng Arnaud có nghĩa là một tuyên bố nếu sau đó thích hợp hơn. –

-1
Function InRange (Lo,Hi,Val : Integer) : Boolean; 
Begin 
Result := (Val>=Lo)And(Val<=Hi); 
End; 
Các vấn đề liên quan