Arrays giver os mulighed for at henvise til en række variabler med samme navn og bruge et tal (et indeks) til at kalde individuelle elementer i den serie. Arrays har både øvre og nedre grænser, og elementerne i arrayet er sammenhængende inden for disse grænser.
Elementer i matrixen er værdier, der alle er af samme type (streng, heltal, post, brugerdefineret objekt).
I Delphi er der to typer arrays: en array med fast størrelse, der altid forbliver den samme størrelse - en statisk matrix - og en dynamisk matrix, hvis størrelse kan ændres ved kørsel.
Statiske arrays
Antag, at vi skriver et program, der lader en bruger indtaste nogle værdier (f.eks. Antallet af aftaler) i begyndelsen af hver dag. Vi vælger at gemme oplysningerne på en liste. Vi kunne kalde denne liste Udnævnelser, og hvert nummer kan muligvis gemmes som aftaler [1], aftaler [2] og så videre.
For at bruge listen skal vi først erklære den. For eksempel:
var Aftaler: matrix [0..6] med heltal;
erklærer en variabel kaldet aftaler, der indeholder en endimensionel matrix (vektor) med 7 heltalværdier. I betragtning af denne erklæring angiver aftaler [3] den fjerde heltalværdi i aftaler. Nummeret i parenteserne kaldes indekset.
Hvis vi opretter en statisk matrix men tildele ikke værdier til alle dens elementer, de ubrugte elementer indeholder tilfældige data; de er som ikke-initialiserede variabler. Følgende kode kan bruges til at indstille alle elementer i aftalens array til 0.
for k: = 0 til 6 do Aftaler [k]: = 0;
Nogle gange er vi nødt til at holde styr på relaterede oplysninger i en matrix. For at holde styr på hver pixel på computerskærmen, skal du for eksempel henvise til dens X- og Y-koordinater ved hjælp af en flerdimensional array for at gemme værdierne.
Med Delphi kan vi erklære arrays af flere dimensioner. For eksempel erklærer følgende udsagn en to-dimensionel 7 af 24-matrix:
var DayHour: matrix [1..7, 1..24] af Real;
For at beregne antallet af elementer i en multidimensionel matrix skal du multiplicere antallet af elementer i hvert indeks. DayHour-variablen, der er erklæret ovenfor, afsætter 168 (7 * 24) elementer i 7 rækker og 24 kolonner. For at hente værdien fra cellen i den tredje række og syvende kolonne vil vi bruge: DayHour [3,7] eller DayHour [3] [7]. Følgende kode kan bruges til at indstille alle elementer i DayHour-matrixen til 0.
for i: = 1 til 7 gør
for j: = 1 til 24 do
DayHour [i, j]: = 0;
Dynamiske arrays
Du ved muligvis ikke nøjagtigt, hvor stort du skal lave en matrix. Det kan være nødvendigt at have evnen til ændre størrelsen på matrixen ved kørsel. En dynamisk matrix erklærer dens type, men ikke dens størrelse. Den faktiske størrelse på en dynamisk matrix kan ændres ved kørsel ved brug af SetLength procedure.
var studerende: række streng;
skaber en en-dimensionel dynamisk række strenge. Erklæringen tildeler ikke hukommelse til studerende. For at oprette arrayet i hukommelsen kalder vi SetLength-proceduren. I betragtning af ovenstående erklæring for eksempel,
SetLength (studerende, 14);
tildeler en række 14 strenge, indekseret 0 til 13. Dynamiske arrays indekseres altid med heltal, startende altid fra 0 til en mindre end deres størrelse i elementer.
Hvis du vil oprette en to-dimensionel dynamisk matrix, skal du bruge følgende kode:
var Matrix: matrix af matrix af dobbelt;
begynde
SetLength (Matrix, 10, 20)
ende;
der tildeler plads til en todimensionel 10 til 20 matrix med dobbelt flydepunktværdier.
For at fjerne en dynamisk array's hukommelsesplads skal du tildele nul til matrixvariablen, som:
Matrix: = nul;
Meget ofte ved dit program ikke på kompileringstidspunktet, hvor mange elementer der er behov for; dette nummer kendes ikke før runtime. Med dynamiske arrays kan du kun allokere så meget lagerplads som kræves på et givet tidspunkt. Med andre ord kan størrelsen på dynamiske arrays ændres ved kørsel, hvilket er en af de vigtigste fordele ved dynamiske arrays.
Det næste eksempel opretter en række heltalværdier og kalder derefter kopifunktionen for at ændre størrelsen på arrayet.
Var
Vektor: matrix af heltal;
k: heltal;
begynde
SetLength (Vector, 10);
for k: = Lav (vektor) til høj (vektor) gør
Vektor [k]: = i * 10;
...
// nu har vi brug for mere plads
SetLength (Vector, 20);
// Her kan Vector array indeholde op til 20 elementer // (den har allerede 10 af dem) ende;
SetLength-funktionen opretter en større (eller mindre) matrix og kopierer de eksisterende værdier til nyt array. Funktionerne Lav og Høj sikrer, at du får adgang til hvert array-element uden at se tilbage i din kode for de korrekte nedre og øverste indeksværdier.