Nastavljamo priฤu o naฤinima definisanja nizova, iz prethodnog ฤlanka. Kada samo naveli da postoji moguฤnost ponovnog definisanja istog niza, nismo naveli kako se definiลกu tipovi podataka. Ukoliko koristite „ReDim“ za kreiranje novog niza iz postojeฤeg, na kraju deklaracije ne zaboravite da definiลกete i tip podataka elemenata niza. Na kraju deklaracije ubacite – „As String“, ako definiลกete niz koji ฤe sadrลพati stringove, ili „As Long“ ako ลพelite niz sa tipom Long. Inaฤe, vaลก niz ฤe biti deklarisan kao niz „variant“ elemenata – ลกto je podrazumevani tip podataka za sve varijable kod kojih nije eksplicitno definisan tip podataka. Takoฤe, kada jednom dodelite tip podataka, kasnije ne moลพete promeniti tip (kod redefinisanja niza).
Inaฤe, nizove moลพemo podeliti u dve grupe – statiฤke i dinamiฤke. Niz koji ste definisali sa praznim zagradama (bez dimenzionisanja) moลพete redefinisati sa „ReDim“, zato ลกto je to dinamiฤki niz. Ovo u suลกtini znaฤi da broj elemenata niza moลพete menjati „u hodu“ – drugim reฤima, moลพete koristiti „ReDim“ viลกe puta, u zavisnosti od toga kako niz „raste“. U drugu ruku, neฤete moฤi da promenite veliฤinu statiฤkog niza, jer je njegova veliฤina determinisana u vreme kompajliranja (prevoฤenja), a ne u vreme izvrลกenja programa. Broj elemenata koji definiลกete na poฤetku, kod statiฤkih nizova, je njihov krajnji domet. Kada redefiniลกete dinamiฤke nizove, vi u stvari kreirate nove nizove, ลกto znaฤi da ฤe svi postojeฤi elementi biti „zbrisani“. Ovo moลพete preduprediti koriลกฤenjem kljuฤne reฤi „Preserve“:
BrGodina = 100
ReDim Godine(BrGodina) As Long
Godine(1) = 5
Debug.Print Godine(1)
ReDim Preserve Godine(200)
Godine(150) = 10
Debug.Print Godine(1)
Debug.Print Godine(150)
U prethodnom primeru, kreiramo dinamiฤki niz ฤije je ime „Godine“, sa stotinu elemenata. Iako smo za dimenzionisanje niza koristili varijablu „BrGodina“, u zagradama smo mogli upisati dimenziju izraลพenu ciframa. „ReDim“ ฤe prihvatiti, i jedan i, drugi naฤin dimenzionisanja, za razliku od „Dim“ definicije koja prihvata samo cifarsku dimenziju, konstantu ili prazne zagrade. Potom smo programskim kodom dodelili vrednost prvom ฤlanu niza, i odmah ga „odลกtampali“ u Debug prozoru (da bi videli prozor pritisnite kombinaciju Ctrl+G). Nakon toga smo redefinisali niz „Godine“ u niz sa 200 elemenata, i to sa Preserve opcijom. Zatim smo, radi testa, 150-tom ฤlanu niza dodelili vrednost – kao ฤlanu ฤiji je indeks veฤi nego prethodno definisanom nizu. I na kraju smo „odลกtampali“ vrednosti prvog i stopedestog elementa niza. Da nismo koristili kljuฤnu reฤ „Preserve“, umesto vrednosti stopedesetog ฤlana niza, dobili bi „praznu liniju“ jer bi se izbrisale vrednosti svih elemenata prethodnog niza. Poลกto je tema zaista ลกiroka, priฤu o nizovima nastavljamo u sledeฤem prilogu.
Pratite Krstaricu na www.krstarica.com