有没有更简单的方法在Pascal中“读取”枚举类型?

3

用户输入一个整数,该整数对应于一个已定义的枚举类型的值。我需要将该值分配给变量t。这是我的想法:

type test = (red,green,blue,fish);
var t:test;
    n,i:integer;
begin
  readln(n);
  t:=red;
  for i:=1 to n do
    t:=succ(t);
end.

我是否过于复杂化这个任务了?是否有可能编写一个更简单的算法?


请注意,Ord(red) = 0,并且使用通用符号 Ord(Low(test)) = 0 - LU RD
1个回答

4
你可以将整数直接转换为枚举类型,例如:
t := test(n);

如果你想要反过来做,那么使用 ord 函数:

n := ord(t);

那样您就可以通过数字移动到列表中的任何项。您可以使用以下代码检查边界:
Ord(Low(test)))

并且

Ord(High(test))

..其中test是你的类型。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接