如何检查数组中是否包含Pascal中的特定索引?

时间:2010-10-04 12:01:29

标签: arrays pascal

E.g。我有这个数组:

type
    OptionRange = array[ 1..9 ] of integer;   

如何检查数组[x]是否存在?

实际上,我想用数组索引来限制用户输入。我做错了吗?有更好的实用解决方案吗?

1 个答案:

答案 0 :(得分:3)

在Free Pascal和Borland方言中(也可能在其他地方),您可以在数组类型或数组类型的变量上使用LowHigh函数。我发现这最常用于确定for循环的界限:

var
  range: OptionRange;
  i: Integer;
begin
  for i := Low(range) to High(range) do begin
    range[i] := GetOptionRangeElement(i);
  end;
end;

您还可以定义子范围类型,然后使用它来定义您在数组上使用的数组和索引变量:

type
  OptionRangeIndex = 1..9;
  OptionRange = array[OptionRangeIndex] of Integer;
var
  range: OptionRange;
  i: OptionRangeIndex;

然后,当您启用了范围检查(假设您的编译器提供了这样的功能)并且您使用的值超出OptionRange索引的范围时,您将收到一个运行时错误,您可以捕获并按你想要的方式处理。

我不确定选项范围是什么,或者为什么会使用九个整数的数组来表示一个,但我认为这是一个名称选择问题。