﻿ Variants.VarArrayLowBound Function
Variants.VarArrayLowBound Function

Returns the low bound of a dimension in a variant array.

Pascal
`function VarArrayLowBound(const A: Variant; Dim: Integer): Integer;`
C++
`int VarArrayLowBound(const Variant A, int Dim);`

VarArrayLowBound returns the low bound of the given dimension in the given variant array. The Dim parameter should be 1 for the leftmost dimension, 2 for the second leftmost dimension, and so on. An exception is raised if the variant given by A is not an array (EVariantInvalidArgError), or if the dimension specified by Dim does not exist (EVariantBadIndexError)..

C++ Examples:

```/*
This example demonstrates the use of variant arrays. In this
example a variant array is created, modified, populated and then freed.
*/
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Variant array;
int bounds[2] = {0, 9};

/*
Create a variant array of 10 elements, starting at 0
and ending at 9. The array contains elements of type integer
*/
array = VarArrayCreate(bounds, 1, varInteger);

// Increase the length of the variant array
VarArrayRedim(array, 49);

MessageDlg(String("Variant array has ") + IntToStr(VarArrayDimCount(array)) +
" dimensions", mtInformation, TMsgDlgButtons() << mbOK, 0);

// Traverse the array from lower to higher bounds
for (int i = VarArrayLowBound(array, 1); i <= VarArrayHighBound(array, 1); i++)
{
// Put the element I at index I
VarArrayPut(array, i, &i, 0);
}

// Now read the elements of the array
for (int i = VarArrayLowBound(array, 1); i <= VarArrayHighBound(array, 1); i++)
{
// Put the element I at index I
if (VarArrayGet(array, &i, 0) != i)
MessageDlg("Error! Invalid element found at current position!",
mtError, TMsgDlgButtons() << mbOK, 0);
}

// Clear the variant array
VarClear(array);
}```

Delphi Examples:

```{
This example demonstrates the use of variant arrays. In this
example a variant array is created, modified, populated and then freed.
}
procedure TForm1.Button1Click(Sender: TObject);
var
Arr: Variant;
I: Integer;
begin
{ Create a variant array of 10 elements, starting at 0
and ending at 9. The array contains elements of type integer }
Arr := VarArrayCreate([0, 9], varInteger);

{ Increase the length of the variant array }
VarArrayRedim(Arr, 49);

MessageDlg('Variant array has ' + IntToStr(VarArrayDimCount(Arr)) + ' dimensions',
mtInformation, [mbOK], 0);

{ Traverse the array from lower to higher bounds }
for I := VarArrayLowBound(Arr, 1) to VarArrayHighBound(Arr, 1) do
begin
{ Put the element I at index I}
VarArrayPut(Arr, I, [I]);
end;

{ Now read the elements of the array }
for I := VarArrayLowBound(Arr, 1) to VarArrayHighBound(Arr, 1) do
begin
{ Put the element I at index I}
if VarArrayGet(Arr, [I]) <> I then
MessageDlg('Error! Invalid element found at current position!', mtError, [mbOK], 0);
end;

{ Clear the variant array }
VarClear(Arr);
end;```