Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
При объявлении динамических массивов не указываются размерность и число элементов (<имя массива> Array Of <тип>), и место в памяти под массив не отводится. Динамическое размещение массива в памяти производится процедурой SetLength(<имя массива>,n1 [,n2]...), где
n1, n2,... - число (константа или переменная) элементов в 1, 2,... размерности массива.
При первом размещении динамического массива всем элементам присваиваются нулевые значения.
Индексы динамического массива ‑ всегда целые числа, начинающиеся с нуля. Повторное применение этой функции к уже существующему массиву изменяет его размер. Если размер увеличен, то все значения элементов сохраняются, а в конце добавляются новые нулевые элементы. Если размер уменьшается, то отсекаются последние элементы, а остаются значения первых элементов.
Пример:
Var A: Array Of Integer; N,i: Integer; //объявление динамического массива A
Begin
N:=3; SetLength(A,N); // массив A(0,0,0)
For i:=0 to N‑1 Do A[i]:=i+1; // массив A(1,2,3)
N:=5; SetLength(A,N); // массив A(1,2,3,0,0)
N:=2; SetLength(A,N); // массив A(1,2)
N:=3; SetLength(A,N); // массив A(1,2,0)
End
К размещенным в памяти динамическим массивам можно применять функции обработки статических массивов.
Записи
Запись ‑ группа компонентов (полей), не обязательно одного типа. Описание этого типа имеет вид:
<имя типа>=[Packed] Record<список описаний полей> End;
Packed - поля располагаются плотно без пропусков, что уменьшает размер используемой памяти, но увеличивает время обработки.
Полям присваиваются пустые исходные значения: 0 ‑ числовым; пробелы ‑ строковым.
Значение константы типа записи задается списком из последовательности вида: имя поля, двоеточие и константа.
Пример типизированной константы типа записи:
Type Date= Record D:1..31; M:1..12; Y:1900..1999; End;
Const Someday: Date=(D:16; M:3; Y:1999)
Допускается вложенность записей любого уровня. При обращении к полю указывают имя записи, символ «точка» и имя поля. Для вложенных полей уточнение продолжается.
Пример вложенных записей:
Type
Adress=record //запись с адресом
Gorod string[30];Ulica:string[30];Dom String[30];Kvartira:string[10] end;
Persona=record //запись с личными данными о человеке
Fam:string[40]; datarogdenij:TdataTime; AdressDom,AdressRab:Adress end;
Var Director, Sotrudnik: Persona; //объявление записей типа Persona
...
Director.AdressDom.Gorod:=’Арамиль’;...
Записи могут быть элементами массивов (массив записей).
Допускаются записи с вариантами вида:
<тип записи>=Record
<описание полей постоянной части>
Сase [<имя поля с константой выбора>:] <имя типа> Of
<константа выбора ‑1>: (<поле‑1>;...<поле‑i>);
...
< константа выбора ‑ n>: (<поле‑1>;...<поле‑j>);
End;
Пример типа записи о товаре с вариантами представления цены:
Zap = Record
Articul: Integer; //код товара
Name: String[40]; //наименование товара
Case TypeCena: Boolean Of //тип значения цены
True: (CenaI: Integer); //цена - целое число
False: (CenaR: Real); //цена ‑ вещественное число
End;
Var PZap: Zap; {объявление переменной ‑ записи PZap типа Zap}
Дата публикования: 2014-12-11; Прочитано: 280 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!