﻿ System.High Function

Returns the highest value in the range of an argument.

Pascal
`procedure High(X);`
C++
`High( X);`

In Delphi code, call High to obtain the upper limit of an Ordinal, Array, or ShortString value. The result type is X, or the index type of X.

X is either a type identifier or a variable reference. The type denoted by X, or the type of the variable denoted by X, must be one of the following:

 For this type High returns Ordinal type (includes Int64) The highest value in the range of the type Array type The highest value within the range of the index type of the array. For empty arrays, High returns –1. short string type The declared size of the string Open array The value, of type Integer, giving the number of elements in the actual parameter minus one short string parameter The value, of type Integer, giving the number of elements in the actual parameter minus one

Delphi Examples:

```{
This example requires a button and two list boxes.  Two lists
of floating point numbers are generated initially and
displayed in the list boxes. Clicking the button sums the lists.
Notice that the range of the list arrays can be any integers,
as long as Low is less than High.
}
var
List1: array[0..3] of Double;
List2: array[5..17] of Double;

function Sum( var X: array of Double): Double;
var
I: Word;
S: Real;
begin
S := 0; { Note that open array index range is always zero-based. }
for I := 0 to High(X) do S := S + X[I];
Sum := S;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
S, TempStr: string;
begin
Str(Sum(List1):4:2, S);
S := 'Sum of List1: ' + S + #13#10;
S := S + 'Sum of List2: ';
Str(Sum(List2):4:2, TempStr);
S := S + TempStr;
MessageDlg(S, mtInformation, [mbOk], 0);

end;

procedure TForm1.FormCreate(Sender: TObject);
var
X: Word;
begin
for X := Low(List1) to High(List1) do
begin
List1[X] := X * 3.4;