Разделы
  Delphi
  C++
  PHP
  Windows
  Linux
 

Основы Delphi: 5. Массивы



Массив - упорядоченный набор данных одного типа, расположенных в памяти последовательно. К элементам массива обращаются по значению-идентификатору. Самый простой вид - обращение по номеру элемента. Для этого массиву задается диапазон индексов. Различают статические и динамические массивы. Первые определяются на стадии компиляции и их структура никогда не меняется. У динамических массивов можно менять размер во время выполнения программы, поэтому память для данных выделяется динамически.

В Delphi статические массивы задаются следующим образом:

var
  <идентификатор>: array [ <диапазон значений перечисляемого типа> ] of <тип элемента> ;
  <идентификатор>: array [ <перечисляемый тип> ] of <тип элемента> ;

Если используется диапазон значение, то первый элемент массива ассоциируется с первый значением диапазона, второй элемент - со вторым значением диапазона и т.д. Если используется перечисляемый тип, то первый элемент массивы ассоциируется с наименьшим значением для данного типа, второй - со следующим и т.д. Размер массива равен количеству различных значений диапазона или перечисляемого типа. Например:

var
  A: array[byte] of byte;
  B: array[7..10] of double;
  C: array['a'..'z'] of char;
  D: array[2..6] of array[5..9] of integer;
type
  Color = (black,red,green,blue,white);
var
  Palette: array[Color] of byte;
  RGB: array[red..blue] of byte;

Чтобы получить элемент массива, необходимо использовать следующую структуру:

<имя переменной массива> [ <индекс> ]

Значение индекса должно входить в диапазон значений, либо иметь приводимый к перечисляемому типу тип. Например:

x := A[0];
y := B[i+7];
C['k'] := z;
D[2][9] := m;
RGB[green] := 255;

Если во время выполнения программы произойдет запись в массив по индексу, выходящему за пределы диапазона, то результат может оказаться непредсказуемым, скорее всего могут быть испорчены значения переменных, расположенных в памяти рядом с элементами массива.

В Delphi существует возможность использовать многомерные массивы. Можно задать, например, трехмерный массив как:

var
  A: array[1..10] of array[1..10] of array[1..10] of integer;

Однако, имеется возможность использовать более короткую запись:

var
  A: array[1..10,1..10,1..10] of integer;

Аналогично, для работы с элементами массива можно использовать вместо

x := A[5][8][3];

конструкцию

x := A[5,8,3];





Copyright (C) ZasKok S.M.S., 2009-2010
Hosted by uCoz