tags:

views:

20

answers:

1

E.g. I have this array:

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

How do I check if array[x] exists?

Actually, I want to limit user input with the array index. Am I doing the wrong thing? Is there a better practical solution?

+1  A: 

In Free Pascal and the Borland dialects (and perhaps elsewhere as well), you can use the Low and High functions on the array type or a variable of the array type. I see this used most often to determine the bounds for for loops:

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

You can also define a subrange type and then use it to define both the array and the index variables you use on the array:

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

Then, when you have range checking enabled (assuming your compiler offers such a feature) and you use a value that's outside the range for OptionRange indices, you'll get a run-time error that you can catch and handle however you want.

I'm not really sure what an option range is or why an array of nine integers would be used to represent one, but I figure that's a name-selection issue.

Rob Kennedy