Напрямую такого не сделать, т.к. размерность нужно знать заранее. Но, как говорится - если нельзя, но очень хочется, то можно. Вот, например, как можно создать матрицу 3x3 на основе
array of.
Код:
procedure TForm1.Button1Click(Sender: TObject);
const
n = 3;
m = 3;
var
a: array of integer;
i, j: integer;
s: string;
begin
SetLength( a, n*m );
// Заполнение
for i := 0 to n-1 do
for j := 0 to m-1 do
a[i*n+j] := Random( 10 );
// Вывод
for i := 0 to n-1 do
begin
s := '';
for j := 0 to m-1 do
s := s + IntToStr( a[i*n+j] ) + ' ';
Memo1.Lines.Add( s );
end;
end;
По аналогии можно создавать и n-мерные массивы.