program resizearrays;
{$rangeChecks on} // optional
type MyArray=array of array of int32;
procedure resize(var a:MyArray;d1:int32;d2:int32);
var
copy:MyArray;
x,y:int32;
begin
SetLength(copy,d1,d2);
For x :=0 to d1-1 do
begin
For y :=0 to d2-1 do
begin
If ((x<=high(a)) and (y<=high(a[0]))) then copy[x,y]:=a[x,y];
end;
end;
setlength(a,0,0);
setlength(a,d1,d2);
For x := 0 to d1 -1 do
begin
For y :=0 to d2 -1 do
begin
a[x,y]:=copy[x,y];
end;
end;
End;
procedure fill(var a:myArray);
var
x,y:int32;
begin
For x := 0 to high(a) do
begin
For y :=0 to high(a[0]) do
begin
a[x,y]:=1+random(9);
end;
end;
end;
procedure show(var a:MyArray);
var
x,y:int32;
begin
For x := 0 to high(a) do
begin
For y :=0 to high(a[0]) do
begin
write(a[x,y],' ');
end;
writeln;
end;
end;
var
a1:MyArray;
begin
setlength(a1,7,9);
writeln('lengths ',high(a1),' x ',high(a1[0]),' (filled with random digits)');
fill(a1);
show(a1);
resize(a1,9,13);
writeln('lengths ',high(a1),' x ',high(a1[0]));
show(a1);
resize(a1,6,6);
writeln('lengths ',high(a1),' x ',high(a1[0]));
show(a1);
writeln('Press return to end . . .');
readln;
end.