type
TSomeType = Integer;
TArr = array of array of TSomeType;
...
procedure ShiftArr(src: TArr; var dest: TArr; n: Integer);
var
i,j,j2: integer;
begin
SetLength(dest, length(src), length(src[0]));
n := n mod length(src[0]);
for i := low(src) to high(src) do
begin
for j := low(src[0]) to high(src[0]) do
begin
j2 := j + n;
if j2 > high(src[0]) then
j2 := j2 - high(src[0]) - 1;
dest[i,j2] := src[i,j];
end;
end;
end;
...
ShiftArr(a,b,n);
...