以下子范围枚举声明有效:
type
TReceiptCode = 'A'..'F';
这不是:
type
TReceiptCode = ' ','A'..'F', 'R';
也不是
type
TReceiptCode = ' ','A','B','C','D','E','F','R';
如何声明具有非连续值的子范围类型?
答案 0 :(得分:5)
不幸的是,我认为没有办法做到这一点。您可以声明(新)非连续枚举或现有类型的子范围,但不能同时声明两者。
答案 1 :(得分:5)
您可以使用套装吗?
TSomeCharSet= Set of Char;
SomeChars: TSomeCharSet = [' ','A','B','C','D','E','F','R'];
可能是奶奶和鸡蛋的情况,但我不确定你在用什么:) ...
那么你剩下的就是创建TNonContigousCharRange,使用Set或数组作为限制“Range”,并在超出范围或使用SetReceiptCode程序执行类似操作时引发异常。
答案 2 :(得分:3)
对于之前的所有答案,我只想添加线索的类型名称:sub range
简单地说,范围具有下限和上限。你描述的是一个集(或一个子集),而不是一个子范围,所以当然你不能把它作为作为一个子范围。