Как я могу проверить, что значение находится в диапазоне с оператором "case" вместо оператора "if"? - PullRequest
8 голосов
/ 18 октября 2011

Может ли следующий оператор if быть преобразован в оператор case?

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;

Это правильно?

Ответы [ 3 ]

25 голосов
/ 18 октября 2011

Если Number имеет некоторый целочисленный тип данных, то:

case number of
5 .. 10: lblAnswer.Caption := 'in range';
else     lblAnswer.Caption := 'out of range';
end;
8 голосов
/ 18 октября 2011

Небольшая коррекция:

case (number >= 5) and (Number <= 10) of
  true:lblAnswer.Caption := 'in range';
  false:lblAnswer.Caption := 'out of range';
end;
0 голосов
/ 10 апреля 2014
Function InRange (Lo,Hi,Val : Integer) : Boolean;
Begin
 Result := (Val>=Lo)And(Val<=Hi);
End;
...