Delphi масив - масив - осигурява по ключови думи, размерите и многомерни масиви от данни,

Ключова дума Array осигурява едномерни и многомерни масиви от данни.

Делфи има три основни типа масиви.

1. Статични масиви

Определен набор, без Преоразмеримо. Те могат да бъдат едномерен или многоизмерно - последният е масив от масиви (масиви и т.н.). Размерът и обхвата на многомерен масив винаги се дава на най-високата, най-левия спектър - майка масив.

Размерът на всеки размер се определя по два начина, които могат да се смесват свободно в многомерен масив.

тип Index. където число Index обикновено байт или Word. Обхватът на този тип определя обхвата на измерване. Например, Byte дава Обхват на 0..255.

Ordinal..Ordinal алтернатива, всеки измервателен обхват може да се настрои, предписани редни ценности 22..44 тип.

2. Динамични масиви

Динамичните масиви нямат никаква preallocation памет. Тя се определя само при създаването на индекса. трябва да бъдат инсталирани Размерите на тези масиви, преди те да бъдат използвани. Например.

определя размера на едномерен масив dynArray 5 елементи. Това ще разпредели памет.

Всички динамични масиви започват с индекс = 0.

Индивидуални субредове многомерен динамичен масив могат да имат различни размери - те със сигурност са отделни масиви. След една такава операция SetLength, на елементите на масив, определени вече може да се търси, въпреки че останалата част от масива е неопределено.

3. Отворете Масивите

И статични и динамични масиви могат да се предават като параметри на подпрограми. Ако определението на параметър масив е без обхват (т.е. динамичен тип масив), тогава трябва да парадоксално предава статичен масив като параметър. Такава масив се нарича отворен масив. Delphi предава дължина като скрит параметър на подпрограмата.

Open масив също може да се определя от вида на константи. Това се нарича Различни (вариант) отворен масив - е предимно използва да позволи променлив брой аргументи стойности предаване подпрограми.

За предаване на динамични справки масив, масив и масивът определяне подпрограма трябва да бъде чрез типове дефиниция масив. Вижте. Например код.

Var
// Определяне статичен масив
wordArray. Array [Word] на цяло число; // Статично размер = Високо (Word)
multiArray. Array [байт, 1..5] на знак; // Статично масив 2 измервания
rangeArray. Array [5..20] канап; // Статично размер масив = 16

аз. Цяло число;

започвам
// Показване на размери и диапазони на тези масиви
ShowMessage ( "Дължина wordArray = '+ IntToStr (Дължина (wordArray)));
ShowMessage ( "Най-малкият елемент wordArray = '+ IntToStr (Low (wordArray)));
ShowMessage ( "най-големият елемент wordArray = '+ IntToStr (High (wordArray)));
ShowMessage ( "Дължина multiArray = '+ IntToStr (Дължина (multiArray)));
ShowMessage ( "Най-малкият елемент multiArray = '+ IntToStr (Low (multiArray)));
ShowMessage ( "най-големият елемент multiArray = '+ IntToStr (High (multiArray)));
ShowMessage ( "Дължина rangeArray = '+ IntToStr (Дължина (rangeArray)));
ShowMessage ( "Най-малкият елемент rangeArray = '+ IntToStr (Low (rangeArray)));
ShowMessage ( "най-големият елемент rangeArray = '+ IntToStr (High (rangeArray)));
ShowMessage ( '');

// Пълен набор от статичен масив е на разположение на местоназначението,
// но стойностите ще бъдат непредсказуеми
ShowMessage ( "член wordArray 7 = '+ IntToStr (wordArray [7]));
ShowMessage ( "wordArray елемент 20 = '+ IntToStr (wordArray [20]));

// Използване индексиране да се пренесат масив
защото: = 5 до 20 направи
rangeArray [Ь]: = IntToStr (I * 5);

// Сега ние използваме индекса за показване 2 елемента
ShowMessage ( "член rangeArray 7 = '+ rangeArray [7]);
ShowMessage ( "rangeArray елемент 20 = '+ rangeArray [20]);
приключи;

Дължина wordArray = 65536
Най-малкият елемент wordArray = 0
Най-големият елемент wordArray = 65535
Дължина multiArray = 256
Най-малкият елемент multiArray = 0
Най-големият елемент multiArray = 255
Дължина rangeArray = 16
Най-малкият елемент rangeArray = 5
Най-големият елемент rangeArray = 20
член wordArray 7 = 0
wordArray елемент 20 = 0
rangeArray елемент 7 = 35
rangeArray елемент 20 = 100

Var
// Определяне на динамичен масив
byteArray. Array на байт; // едномерен масив
multiArray. Array Array на струна // многомерен масив

И, Й. Цяло число;

започвам
// Определете дължината на едномерен масив
SetLength (byteArray, 5);

// Показване на размера и обхвата на масива
ShowMessage ( "Дължина byteArray = '+ IntToStr (Дължина (byteArray)));
ShowMessage ( "Най-малкият елемент byteArray = '+ IntToStr (Low (byteArray)));
ShowMessage ( "най-големият елемент byteArray = '+ IntToStr (High (byteArray)));

// Попълнете масива - не забравяйте, че динамичните масиви започват от 0
защото: = 0 до 4 направи
byteArray [Ь]: = I * 5;

// Показване на избрани елементи масив
ShowMessage ( "byteArray елемент 2 = '+ IntToStr (byteArray [2]));
ShowMessage ( "byteArray елемент 4 = '+ IntToStr (byteArray [4]));

// Определете дължината на първата измервателна многомерен масив
SetLength (multiArray, 3);

// Определете различните дължини на 3 под-редици
SetLength (multiArray [0], 1);
SetLength (multiArray [1], 2);
SetLength (multiArray [2] 3);

// Задаване и показване на всички елементи на масива
защото: = 0 до висока (multiArray) направи
за к: = 0 до висока (multiArray [Ь]) направи
започвам
multiArray [Ь, й]: = IntToStr (I + J);
ShowMessage ( "multiArray [ '+ intToStr (I) +", "+ intToStr (й) +'] = '+
multiArray [Ь, й]);
приключи;
приключи;

byteArray дължина = 5
Най-малкият елемент byteArray = 0
Най-малкият елемент byteArray = 4
byteArray елемент 2 = 10
byteArray елемент 4 = 20
multiArray [0,0] = 0
multiArray [1,0] = 1
multiArray [1,1] = 2
multiArray [2,0] = 2
multiArray [2,1] = 3
multiArray [2,2] = 4

Пример код. Използването на отворени масиви като параметри

Var
// Определяне на динамичен масив
charArray. TCharArray;
openArray. Array [0..2] на знак;

аз. Цяло число;

започвам
// Transfer неопределен масив като динамичен масив от подпрограма
FurnishDynamicArray (charArray);

// Попълнете масива за следващия подпрограмата
openArray [0]: = 'N';
openArray [1]: = "О";
openArray [2]: = 'W;

// прехвърляне на предварително определен масив като подпрограма отворен масив
ShowOpenTypeArray (openArray);

// Показване на всички елементи на масива, който се предава
защото: = 0 до висока (charArray) направи
ShowMessage ( "charArray [ '+ intToStr (I) +'] = '+ charArray [Ь]);

// Transfer рутинни брой символи като отворен постоянен спектър
ShowOpenConstArray ([ "Н", "е", "L", "L", "о"]);
приключи;

// процедура, която променя динамично размера на масив
// ВАЖНО - Моля, имайте предвид, че масивът пиши тук не трябва да се определи -
// ние трябва да използваме масив тип, за да се избегне на масива,
// обработват като отворена масив.
процедура TForm1.FurnishDynamicArray (Var typeArray TCharArray.);
Var
аз. Цяло число;

започвам
// Определете дължината на едномерен масив
SetLength (typeArray, 5);

// Попълнете масива - не забравяйте, че динамичните масиви започват от 0
защото: = 0 до 4 направи
typeArray [Ь]: = Chr (Ord ( "А") + I);
приключи;

// процедура, която отнема отворен масив
процедура TForm1.ShowOpenTypeArray (typeArray Array на овъгляване.);
Var
аз. Цяло число;

започвам
// Показване на всички елементи на масива, който се предава
защото: = 0 до висока (typeArray) направи
ShowMessage ( "typeArray [ '+ intToStr (I) +'] = '+ typeArray [Ь]);
приключи;

// процедура, която отнема отворен постоянен спектър
процедура TForm1.ShowOpenConstArray (конст constArray Array на конст.);
Var
аз. Цяло число;

започвам
// Показване на всички елементи на масива, който се предава
защото: = 0 до висока (constArray) направи
ShowMessage ( "constArray [ '+ intToStr (I) +'] = '+ constArray [Ь] .VChar);
приключи;

typeArray [0] = N
typeArray [1] = о
typeArray [2] = W
charArray [0] = A
charArray [1] = B
charArray [2] = С
charArray [3] = D
charArray [4] = E
constArray [0] = Н
constArray [1] = д
constArray [2] = л
constArray [3] = л
constArray [4] = о