Hi
To have several dimensions, the simplest is to use another dynamic array as the base type. It is better, but not required, to define a type for the first dimension : this way you will be able to make procedures to handle one dimension item.
For example :
type
TLines = array of string ;
TGrid = array of TLines ;
var
AGrid : TGrid ;
begin
SetLength ( AGrid, 1, 1);
AGrid[0,0] := 'Something' ;
end ;
Just check the exact order of dimensions, I'm not sure.
Regards
Tintinux