我想从用户那里获取有效的枚举数据类型输入。我试过这样的。 FPC编译器说只使用'<>'来比较二进制数据类型。关系运算符。请在Cham_Cham'中声明。我可以使用Space而不是' _'
我不会和OOP一起去。如果这是唯一的方式,那么我会去。 (在我看来,它可以在没有OOP的情况下完成。就像没有使用try-catch一样。)
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.
答案 0 :(得分:1)
Until Choice <> Food
Food
是一种类型。 Choice
是一个值。您无法将类型与值进行比较。这就是错误消息告诉你的内容。如果要将输入的值与某些内容进行比较,则必须是Food
类型的另一个值。
至于您的其他问题,语言中的名称不能包含空格。
您可能需要重新考虑如何获得此输入。就目前而言,您的代码希望用户输入序数值。我怀疑你希望用户必须输入数字。此外,这使他们能够键入无效的序数值,即在类型范围之外。
更好的方法可能是要求用户键入文本,然后让您的代码将文本与食物名称进行比较,并适当地分配序数。但我真的不知道你的计划正在努力实现什么,而且超出了这个问题的范围而更多地说明了这一点。