Masyvo duomenų tipai Delphi

Masyvas := Vertybių serija

moteris žiūri į nešiojamąjį kompiuterį šalia langų biure.

Stickney dizainas / Moment Open / Getty Images





Masyvai leidžia nurodyti kintamųjų seriją tuo pačiu pavadinimu ir naudoti skaičių (indeksą), kad iššauktume atskirus tos serijos elementus. Masyvai turi ir viršutinę, ir apatinę ribas, o masyvo elementai tose ribose yra gretimi.

Masyvo elementai yra to paties tipo reikšmės (eilutė, sveikasis skaičius, įrašas, pasirinktinis objektas).



„Delphi“ yra dviejų tipų masyvai: fiksuoto dydžio masyvas, kuris visada išlieka tokio paties dydžio – statinis masyvas – ir dinaminis masyvas, kurio dydis gali keistis vykdymo metu.

Statiniai masyvai

Tarkime, kad rašome programą, kuri leidžia vartotojui kiekvienos dienos pradžioje įvesti tam tikras reikšmes (pvz., susitikimų skaičių). Mes pasirinktume informaciją saugoti sąraše. Šį sąrašą galėtume pavadinti Paskyrimai , ir kiekvienas numeris gali būti saugomas kaip Susitikimai[1], Susitikimai[2] ir pan.



Norėdami naudoti sąrašą, pirmiausia turime jį deklaruoti. Pavyzdžiui:

|_+_|

deklaruoja kintamąjį, vadinamą Paskyrimai, kuriame yra vienmatis masyvas (vektorius) iš 7 sveikųjų skaičių reikšmių. Atsižvelgiant į šią deklaraciją, Paskyrimai[3] žymi ketvirtąją sveikojo skaičiaus reikšmę paskyrimų lange. Skaičius skliausteliuose vadinamas indeksu.

Jei sukursime a statinis masyvas bet nepriskirkite reikšmių visiems jo elementams, nepanaudotuose elementuose yra atsitiktinių duomenų; jie yra tarsi neinicijuoti kintamieji. Šis kodas gali būti naudojamas visiems susitikimų masyvo elementams nustatyti į 0.

|_+_|

Kartais mums reikia sekti susijusią informaciją masyve. Pavyzdžiui, norėdami sekti kiekvieną pikselį kompiuterio ekrane, turite nurodyti jo X ir Y koordinates naudodami daugiamatis masyvas reikšmėms saugoti.



Su Delphi galime deklaruoti kelių matmenų masyvus. Pavyzdžiui, šis teiginys deklaruoja dvimatį 7 x 24 masyvą:

|_+_|

Norėdami apskaičiuoti daugiamačio masyvo elementų skaičių, padauginkite kiekvieno indekso elementų skaičių. Aukščiau deklaruotas DayHour kintamasis atideda 168 (7*24) elementus 7 eilutėse ir 24 stulpeliuose. Norėdami gauti reikšmę iš langelio trečioje eilutėje ir septintajame stulpelyje, naudotume: DayHour[3,7] arba DayHour[3][7]. Šis kodas gali būti naudojamas norint nustatyti visus DayHour masyvo elementus į 0.



|_+_|

Dinaminiai masyvai

Galbūt tiksliai nežinote, kokio dydžio sukurti masyvą. Galbūt norėsite turėti galimybę keičiant masyvo dydį vykdymo metu . Dinaminis masyvas deklaruoja savo tipą, bet ne dydį. Tikrasis dinaminio masyvo dydis gali būti pakeistas vykdymo metu naudojant Nustatyti ilgį procedūra.

|_+_|

sukuria vienmatį dinaminį eilučių masyvą. Deklaracija neskiria atminties Mokiniams. Norėdami sukurti masyvą atmintyje, vadiname SetLength procedūrą. Pavyzdžiui, atsižvelgiant į aukščiau pateiktą deklaraciją,



|_+_|

paskiria masyvą iš 14 eilučių, indeksuotų nuo 0 iki 13. Dinaminiai masyvai visada indeksuojami sveikaisiais skaičiais, visada pradedant nuo 0 iki vienu mažesniu nei jų dydis elementuose.

Norėdami sukurti dvimatį dinaminį masyvą, naudokite šį kodą:



|_+_|

kuri skiria vietos dvimačiui 10 x 20 dvigubo slankiojo kablelio verčių masyvei.

Norėdami pašalinti dinaminio masyvo atminties vietą, masyvo kintamajam priskirkite nulį, pvz.:

|_+_|

Labai dažnai jūsų programa kompiliavimo metu nežino, kiek elementų reikės; šis skaičius nebus žinomas iki vykdymo laiko. Naudodami dinaminius masyvus galite skirti tik tiek saugyklos vietos, kiek reikia tam tikru metu. Kitaip tariant, dinaminių masyvų dydis gali būti keičiamas vykdymo metu, o tai yra vienas iš pagrindinių dinaminių masyvų pranašumų.

Kitas pavyzdys sukuria sveikųjų skaičių reikšmių masyvą ir iškviečia funkciją Kopijuoti, kad pakeistų masyvo dydį.

|_+_|

Funkcija SetLength sukuria didesnį (arba mažesnį) masyvą ir nukopijuoja esamas reikšmes į naujas masyvas . Funkcijos Žemas ir Aukštas užtikrina, kad galėtumėte pasiekti kiekvieną masyvo elementą neieškodami teisingų apatinių ir viršutinių indekso reikšmių.