如何对案例进行多种变体

rik*_*481 3 delphi delphi-6

我使用delphi运行以下代码:

if (number> 8) and (number< 10) then
    message:= 'first option'
else if (number> 11) and (number< 17) then
    message:= 'second option'
else if (number> 18) then
    message:= 'third option';
Run Code Online (Sandbox Code Playgroud)

我需要执行确切的代码,但使用case,我正在尝试,但没有找到任何解释如何执行此操作的内容:

case idade of
(case > 8 and case< 10) : message:= 'first option';
(case > 11 and case< 17) : message:= 'second option';
(case > 18) : message:= 'third option';
end;
Run Code Online (Sandbox Code Playgroud)

我也尝试过搜索有关案例的问题,但我想我也没有找到找到此答案的正确方法。

Rem*_*eau 5

使用语句可以得到的最接近的结果case如下所示:

case idade of
  9: message := 'first option';
  12..16: message := 'second option';
else
  if idade > 18 then
    message := 'third option';
end;
Run Code Online (Sandbox Code Playgroud)

或者这个(感谢@AndreasRejbrand):

case idade of
  9: message := 'first option';
  12..16: message := 'second option';
  19..MaxInt{idade.MaxValue}: message := 'third option';
end;
Run Code Online (Sandbox Code Playgroud)

您可能想阅读 Embarcadero 的文档,了解案例陈述的实际工作原理。

请注意,在原始代码中,if (number> 8) and (number< 10) then与 相同,并且您跳过了if is 10、17 或 18if (number = 9) then的赋值,这是您真正想要的吗?messagenumber