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