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

Материал из Вики проекта PascalABC.NET
Версия от 15:42, 14 января 2010; Mikst (обсуждение | вклад)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Перейти к навигацииПерейти к поиску

Здесь иллюстрируется, как работать с прямоугольными динамическими массивами.

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).

Ссылки