Динамические массивы: особенности: различия между версиями

Материал из Вики проекта PascalABC.NET
Перейти к навигацииПерейти к поиску
Нет описания правки
Нет описания правки
 
Строка 1: Строка 1:
Данный пример иллюстрирует особенности работы с динамическими массивами.
<source lang="Delphi">procedure Print(a: array of integer);
begin
  foreach v: integer in a do
    Write(v, ' ');
  Writeln;
end;   
var a: array of integer;
begin
  a := new integer[10];
  for var i:=0 to a.Length-1 do
    a[i] := PABCSystem.Random(100);
  Print(a);
  SetLength(a,12); // Перевыделение памяти. Старые данные сохраняются
  Print(a);
 
  System.Array.Sort(a);
  Print(a);
  System.Array.Reverse(a);
  Print(a);
end.</source>
Следует обратить внимание, что для получения длины массива используется a.Length. Кроме этого, память под массив может быть выделена не только процедурой SetLength, но и операцией new.
Наконец, параметр подпрограммы a: array of integer представляет собой именно динамический массив, а не открытый массив, как в Delphi.
== Ссылки ==
== Ссылки ==
*[[Особенности языка: продвинутый уровень]]
*[[Особенности языка: продвинутый уровень]]
*[http://pascalabc.net/ru/bazovyie-osobennosti-yazyika-i-bibliotek.html Сайт PascalABC.NET: Особенности языка]
*[http://pascalabc.net/ru/bazovyie-osobennosti-yazyika-i-bibliotek.html Сайт PascalABC.NET: Особенности языка]

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

Данный пример иллюстрирует особенности работы с динамическими массивами.

procedure Print(a: array of integer);
begin
  foreach v: integer in a do
    Write(v, ' ');
  Writeln;
end;    

var a: array of integer;

begin
  a := new integer[10];

  for var i:=0 to a.Length-1 do
    a[i] := PABCSystem.Random(100);

  Print(a);

  SetLength(a,12); // Перевыделение памяти. Старые данные сохраняются
  Print(a);
  
  System.Array.Sort(a);
  Print(a);

  System.Array.Reverse(a);
  Print(a);
end.

Следует обратить внимание, что для получения длины массива используется a.Length. Кроме этого, память под массив может быть выделена не только процедурой SetLength, но и операцией new.

Наконец, параметр подпрограммы a: array of integer представляет собой именно динамический массив, а не открытый массив, как в Delphi.

Ссылки