我想从用户那里获取有效的枚举数据类型输入。我试过这样:
program Enum
type Food = (Pizza, Biryani, Halwa, Cham_Cham)
var Choice: Food;
begin
WriteLn('Pizza, Biryani, Halwa, Cham_cham');
repeat
WriteLn('Which Food Do you want to eat?');
Read(Choice);
Until Choice <> Food
WriteLn('You can eat: ' + Choice);
end.
但是,FPC 表示使用
<>
关系运算符时只能比较二进制数据类型。
我想避免 OOP,但如果这是唯一的方法,那么我会的。我希望它可以在没有 OOP 的情况下完成,就像不使用
try
‑catch
。
另外,可以在
_
中使用空格代替Cham_Cham
吗?
Until Choice <> Food
Food
是一种类型。 Choice
是一个值。您无法将类型与值进行比较。这就是错误消息告诉您的内容。如果您想将输入的值与某个值进行比较,它必须是 Food
类型的另一个值。
至于您的其他问题,该语言中的名称不能包含空格。
您可能需要重新考虑如何获取此输入。按照目前的情况,您的代码期望用户输入序数值。我怀疑您希望用户必须输入数字。此外,这使他们能够输入无效的序数值,即超出类型范围的序数值。
更好的方法可能是要求用户输入文本,然后让代码将文本与食物名称进行比较,并适当地分配序数。但我真的不知道你的程序想要实现什么目标,并且超出了这个问题的范围,无法多说。