如何在Pascal中获取枚举类型中的项数?

如何在Pascal中获取枚举类型中的项数?,pascal,lazarus,maxlength,Pascal,Lazarus,Maxlength,我应该在“***”中使用什么来获取输出中饮料枚举类型的元素数? 我使用了sizeof(),但它给出了类型的字节值。 我用的是lazarus,仅供参考。应该给你定义的饮料数量。应该给你定义的饮料数量。你可以使用ORD和高低功能: program Enumeration; uses crt; type beverage = (coffee, tea, milk, water, coke, limejuice); var drink:beverage; begin`enter c

我应该在“***”中使用什么来获取输出中饮料枚举类型的元素数? 我使用了
sizeof()
,但它给出了类型的字节值。
我用的是lazarus,仅供参考。

应该给你定义的饮料数量。

应该给你定义的饮料数量。

你可以使用ORD高低功能:

program 
  Enumeration;
uses 
  crt;
type
  beverage = (coffee, tea, milk, water, coke, limejuice);
var
  drink:beverage; 
begin`enter code here`
  writeln('Which drink do you want?');
  writeln('You have ', *** , ' choices');
  readkey;
end.
代码:

ord(high(beverage)) - ord(low(beverage)) + 1 
结果:

program 
  Enumeration;
uses 
  crt;
type
  beverage = (coffee, tea, milk, water, coke, limejuice);
var
  drink:beverage; 
begin`enter code here`
  writeln('Which drink do you want?');
  writeln('You have ', ord(high(beverage))-ord(low(beverage))+1 , ' choices');
  readkey;
end.

您可以使用ORD高-低功能:

program 
  Enumeration;
uses 
  crt;
type
  beverage = (coffee, tea, milk, water, coke, limejuice);
var
  drink:beverage; 
begin`enter code here`
  writeln('Which drink do you want?');
  writeln('You have ', *** , ' choices');
  readkey;
end.
代码:

ord(high(beverage)) - ord(low(beverage)) + 1 
结果:

program 
  Enumeration;
uses 
  crt;
type
  beverage = (coffee, tea, milk, water, coke, limejuice);
var
  drink:beverage; 
begin`enter code here`
  writeln('Which drink do you want?');
  writeln('You have ', ord(high(beverage))-ord(low(beverage))+1 , ' choices');
  readkey;
end.

添加一个警告可能很好,只有当值没有被强制“跳转”时,这才是正确的,例如,如果枚举有
milk=7
。添加一个警告可能很好,只有当值没有被强制“跳转”时,这才是正确的,例如,如果枚举有
milk=7