Прямоугольные динамические массивы

Материал из Вики проекта 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).

Ссылки

Персональные инструменты