TheLion posted an alternative solution but it vanished in the server move. Here it is again: multidimensional dynamic arrays.

[pascal]var
MyArray: array of array of Integer;
i: Integer;
begin
SetLength(MyArray, 5);
for i := 0 to 4 do
SetLength(MyArray[i], i+1);

// total count of arrays
ShowMessage(IntToStr(Length(MyArray)));

// get the length of each array
for i := 0 to 4 do
ShowMessage(IntToStr(Length(MyArray[i])));
end;[/pascal]

Syntax may be a little off because I've not used multidimensional dynamic arrays much.