Прямоугольные динамические массивы
Материал из Вики проекта PascalABC.NET
Перейти к навигацииПерейти к поиску
Здесь иллюстрируется, как работать с прямоугольными динамическими массивами.
procedure Print(a: array [,] of integer);
begin
for var i := 0 to Length(a,0) - 1 do
begin
for var j := 0 to Length(a,1) - 1 do
write(a[i,j]: 3);
writeln;
end;
end;
var a: array [,] of integer;
begin
a := new integer[5,7];
for var i:=0 to a.GetLength(0)-1 do
for var j:=0 to a.GetLength(1)-1 do
a[i,j] := Random(100);
Print(a);
writeln;
SetLength(a,6,8); // Перевыделение памяти. Старые данные сохраняются
Print(a);
end.
Отметим, что new выделяет память и заполняет ее нулями, а SetLength может также перевыделять память с сохранением старого содержимого. Отметим также, что для доступа к размеру п i-той размерности используется либо a.GetLength(i), либо Length(a,i).