Курсовая работа: Поиск кратчайшего пути в лабиринте 2
//Разрушить
//if R<>nil then for i:=0 to m do R[i]:=nil;
R:=nil;
SetLength(R,m+1); //Память
for i:=0 to m do SetLength(R[i],n+1);
//Формируем прямоугольники
SetLength(y,m+1);
SetLength(x,n+1);
SetLength(z,m+n+1);
//По высоте
d:=(zR.Bottom-zR.Top) div m;
k:=(zR.Bottom-zR.Top) mod m;
for i:=0 to m-1 do z[i]:=d;
for i:=0 to k-1 do inc(z[i]);
y[0]:=zR.Top;
for i:=0 to m-1 do y[i+1]:=y[i]+z[i];
//По ширине
d:=(zR.Right-zR.Left) div n;
k:=(zR.Right-zR.Left) mod n;
for j:=0 to n-1 do z[j]:=d;
for j:=0 to k-1 do inc(z[j]);
x[0]:=zR.Left;
for j:=0 to n-1 do x[j+1]:=x[j]+z[j];
//Прямоугольники
for i:=0 to m-1 do begin
for j:=0 to n-1 do begin
R[i+1,j+1]:=Rect(x[j],y[i],x[j+1],y[i+1]);
end;
end;