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

Материал из Вики проекта PascalABC.NET
Перейти к навигацииПерейти к поиску
(Новая: == Ссылки == *Особенности языка: продвинутый уровень *[http://pascalabc.net/ru/bazovyie-osobennosti-yazyika-i-bibliotek.html Сайт PascalAB...)
 
Нет описания правки
 
Строка 1: Строка 1:
Здесь иллюстрируется, как работать с прямоугольными динамическими массивами.
<source lang="Delphi">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.</source>
Отметим, что new выделяет память и заполняет ее нулями, а SetLength может также перевыделять память с сохранением старого содержимого. Отметим также, что для доступа к размеру п i-той размерности используется либо a.GetLength(i), либо Length(a,i).
== Ссылки ==
== Ссылки ==
*[[Особенности языка: продвинутый уровень]]
*[[Особенности языка: продвинутый уровень]]
*[http://pascalabc.net/ru/bazovyie-osobennosti-yazyika-i-bibliotek.html Сайт PascalABC.NET: Особенности языка]
*[http://pascalabc.net/ru/bazovyie-osobennosti-yazyika-i-bibliotek.html Сайт PascalABC.NET: Особенности языка]

Текущая версия от 15:42, 14 января 2010

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

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

Ссылки