Delphi matrice - matrice - oferă seturi de date multi-dimensionale de cuvinte cheie-dimensionale și,

Array cuvinte cheie furnizează un one-dimensional și multi-dimensionale seturi de date.

Delphi are trei tipuri principale de matrice.

1. matrice statice

set definit, non-redimensionabilă. Ele pot fi unidimensională sau multidimensională - acesta din urmă este o matrice de matrice (tablouri, etc). Mărimea și gama de matrice multi-dimensionale este întotdeauna dat cea mai mare, din stânga matrice - matrice părinte.

Mărimea fiecărei dimensiuni este definită în două moduri, care pot fi amestecate în mod liber într-o matrice multidimensionale.

Tip Index. în cazul în care în mod obișnuit Index întreg octet sau Word. Gama de acest tip determină domeniul de măsurare. De exemplu, Byte dă Intervalul de 0..255.

Ordinal..Ordinal Alternativ, fiecare interval de măsurare pot fi setate valori ordinale prescrise 22..44 tip.

2. dinamice Arrays

matrice dinamice nu au nici o memorie preallocation. Ea este determinată numai atunci când este creat indexul. Dimensiunile acestor matrice trebuie să fie instalate înainte ca acestea vor fi utilizate. De exemplu.

setează dimensiunea matrice unidimensională dynArray 5 elemente. Acest lucru va aloca memorie.

Toate matrice dinamice incep cu indice = 0.

subarrays individuale matrice dinamică multidimensionale pot avea diferite dimensiuni - acestea sunt cu siguranță matrice separate. După o astfel de operațiune setlength, la elementele de matrice stabilite deja poate fi invocată, chiar dacă restul de matrice este nedefinit.

3. Arrays deschise

Și matrice statice și dinamice pot fi trimise ca parametrii subrutine. În cazul în care definiția unui parametru de matrice nu are nici un interval (de exemplu, un tip de matrice dinamic), atunci trebuie, să transmită în mod paradoxal matrice statică ca parametru. O astfel de matrice se numește matrice ca deschis. Delphi transmite lungime ca parametru ascuns la subprogramul.

Deschideți matrice poate fi, de asemenea, definit de tipul valorilor constante. Aceasta se numește Different (variantă) matrice deschisă - este utilizat în principal pentru a permite unui număr variabil de valori argumente subrutina de transmisie.

Pentru transmisia unei referințe matrice dinamică, matrice și matrice determinarea subrutinei trebuie să fie prin tipul de definiție matrice. A se vedea. De exemplu, codul.

var
// Definiți o matrice statică
wordArray. Array [Word] de Integer; // size = Static ridicat (Word)
multiArray. Array [Byte, 1..5] de char; // array static 2 masuratori
rangeArray. Array [5..20] string; // Dimensiunea matrice statică = 16

i. integer;

începe
// Afișează dimensiunile și limitele acestor matrice
ShowMessage ( 'Lungimea wordArray =' + IntToStr (Lungime (wordArray)));
ShowMessage ( 'cel mai mic element wordArray =' + IntToStr (Low (wordArray)));
ShowMessage ( 'cel mai mare element de wordArray =' + IntToStr (High (wordArray)));
ShowMessage ( 'Lungimea multiArray =' + IntToStr (Lungime (multiArray)));
ShowMessage ( 'cel mai mic element multiArray =' + IntToStr (Low (multiArray)));
ShowMessage ( 'cel mai mare element de multiArray =' + IntToStr (High (multiArray)));
ShowMessage ( 'Lungimea rangeArray =' + IntToStr (Lungime (rangeArray)));
ShowMessage ( 'cel mai mic element rangeArray =' + IntToStr (Low (rangeArray)));
ShowMessage ( 'cel mai mare element de rangeArray =' + IntToStr (High (rangeArray)));
ShowMessage ( '');

// Gama completa de matrice statică este disponibil la destinație,
// dar valorile vor fi imprevizibile
ShowMessage ( 'membru wordArray 7 =' + IntToStr (wordArray [7]));
ShowMessage ( 'Element wordArray 20 =' + IntToStr (wordArray [20]));

// Utilizați indexare pentru a popula o matrice
pentru i: = 5 până la 20 do
rangeArray [i]: = IntToStr (i * 5);

// Acum vom folosi indexul pentru a afișa 2 elemente
ShowMessage ( 'membru rangeArray 7 =' + rangeArray [7]);
ShowMessage ( 'Element rangeArray 20 =' + rangeArray [20]);
se încheie;

Lungime wordArray = 65536
Cel mai mic element wordArray = 0
Cel mai mare element wordArray = 65535
Lungimea multiArray = 256
Cel mai mic element multiArray = 0
Cel mai mare element de multiArray = 255
Lungimea rangeArray = 16
Cel mai mic element rangeArray = 5
Cel mai mare element rangeArray = 20
membru wordArray 7 = 0
Element wordArray 20 = 0
Element rangeArray 7 = 35
Element rangeArray 20 = 100

var
// Determinarea matrice dinamice
byteArray. Matrice de Byte; // matrice unidimensională
multiArray. Array de matrice șir; // matrice multidimensionale

i, j. integer;

începe
// Setați lungimea unei matrice unidimensională
Setlength (byteArray, 5);

// Afișează dimensiunea și gama de matrice
ShowMessage ( 'Lungimea byteArray =' + IntToStr (Lungime (byteArray)));
ShowMessage ( 'cel mai mic element byteArray =' + IntToStr (Low (byteArray)));
ShowMessage ( 'cel mai mare element de byteArray =' + IntToStr (High (byteArray)));

// Umple matrice - amintiți-vă că matrice dinamice încep de la 0
pentru i: = 0 până la 4 do
byteArray [i]: = i * 5;

// Afișarea elementelor unei matrici selectate
ShowMessage ( 'Element byteArray 2 =' + IntToStr (byteArray [2]));
ShowMessage ( 'Element byteArray 4 =' + IntToStr (byteArray [4]));

// Setați lungimea matrice multidimensionale primă măsurare
Setlength (multiArray, 3);

// Setați lungimile diferite ale celor 3 sub-matrice
Setlength (multiArray [0], 1);
Setlength (multiArray [1], 2);
Setlength (multiArray [2] 3);

// Set și afișarea tuturor elementelor de matrice
pentru i: = 0 la High (multiArray) do
pentru j: = 0 până la ridicat (multiArray [i]) fac
începe
multiArray [i, j]: = IntToStr (i + j);
ShowMessage ( 'multiArray [' + intToStr (i) + '' + intToStr (j) + '] =' +
multiArray [i, j]);
se încheie;
se încheie;

byteArray lungime = 5
Cel mai mic element byteArray = 0
Cel mai mic element byteArray = 4
Element byteArray 2 = 10
Element 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

Exemplu de cod. Utilizarea de matrice deschise ca parametri

var
// Determinarea matrice dinamice
charArray. TCharArray;
openArray. Array [0..2] de char;

i. integer;

începe
// Transfer array indefinit ca o matrice dinamică de subrutină
FurnishDynamicArray (charArray);

// Umple matrice pentru următoarea subprogramului
openArray [0]: = 'N';
openArray [1]: = 'o';
openArray [2]: = 'w';

// Transferul de matrice predeterminat ca subrutină matrice deschisă
ShowOpenTypeArray (openArray);

// Afișează toate elementele de matrice, care este trecut
pentru i: = 0 la High (charArray) do
ShowMessage ( 'charArray [' + intToStr (i) + '] =' + charArray [i]);

// Transfer numărul de rutină de caractere ca deschis o matrice permanentă
ShowOpenConstArray ([ 'H', 'e', ​​'l', 'l', 'o']);
se încheie;

// Procedura care modifică dimensiunea dinamică matrice
// IMPORTANT - Vă rugăm să rețineți că matrice de tip aici, nu ar trebui să fie definite -
// trebuie să folosim un tip de matrice, pentru a evita matrice,
// prelucrate ca o matrice deschisă.
Procedura TForm1.FurnishDynamicArray (var typeArray TCharArray.);
var
i. integer;

începe
// Setați lungimea unei matrice unidimensională
Setlength (typeArray, 5);

// Umple matrice - amintiți-vă că matrice dinamice încep de la 0
pentru i: = 0 până la 4 do
typeArray [i]: = Cro (Ord ( 'A') + i);
se încheie;

// Procedura care ia o matrice deschisă
Procedura TForm1.ShowOpenTypeArray (typeArray Array de char.);
var
i. integer;

începe
// Afișează toate elementele de matrice, care este trecut
pentru i: = 0 la High (typeArray) do
ShowMessage ( 'typeArray [' + intToStr (i) + '] =' + typeArray [i]);
se încheie;

// procedura care dureaza o constantă matrice deschisă
Procedura TForm1.ShowOpenConstArray (Const constArray Array de const.);
var
i. integer;

începe
// Afișează toate elementele de matrice, care este trecut
pentru i: = 0 la High (constArray) do
ShowMessage ( 'constArray [' + intToStr (i) + '] =' + constArray [i] .VChar);
se încheie;

typeArray [0] = N
typeArray [1] = o
typeArray [2] = w
charArray [0] = A
charArray [1] = B
charArray [2] = C
charArray [3] = D
charArray [4] = E
constArray [0] = H
constArray [1] = e
constArray [2] = l
constArray [3] = l
constArray [4] = o