Kada vršite dimenzionisanje ili redimenzionisanje niza uz pomoć jedne brojke, možete kreirati niz čiji je indeks najvećeg elementa isti kao broj koji vam je potreban. Na primer, element MojNiz(10) spada u elemente iz gornjeg dela, ali ovaj niz ima u stvari 11 elemenata pošto je podrazumevano da je kod Visual Basic nizova inicijalni indeks 0 (nula). Ovakav način indeksiranja (sa početnom nulom) možete izbeći na dva načina. Prva tehnika se oslanja na izraz Option Base. Ako želite da svi nizovi u jednom modulu počinju od jedinice, a ne od nule, ubacite sledeću liniju na vrh sekcije deklaracija (Declarations):
Option Base 1
Većina programera ne čini ništa po ovom pitanju, i time žrtvuje neiskorišćeni prostor – posebno ako imaju potrebu za nizovima čiji indeks startuje od nule, ali i za onim koji startuju od jedinice. Mada, moramo i to da kažemo da je Option Base izraz poprilično zastareo, jer je nastao u vremenu hroničnog nedostatka memorije, kada nije bilo druge alternative.
Druga tehnika je bolja alternativa – tačnije, ovom metodom se ne određuje samo gornja granica indeksa, već i gornja i donja granica:
ReDim Godine(1 To 2) As Long
Debug.Print LBound(Godine); UBound(Godine)
‘Odstampace se 1 i 2ReDim Godine(3 To 100)
Debug.Print LBound(Godine); UBound(Godine)
‘Odstampace se 3 i 100ReDim Godine(200)
Debug.Print LBound(Godine); UBound(Godine)
‘Odstampace se 0 i 200
Ovde smo iskoristili dve ugrađene funkcije (LBound i UBound) koje vraćaju najmanju i najvišu vrednost indeksa nekog niza.
Obezbeđivanje obe granice niza iziskuje malo više posla pri kreiranju nizova, ali će vam kasnije sigurno uštedeti mnogo vremena. Od ovoga možete imati posebne koristi, jer će vam funkcionisanje nekih nizova biti mnogo jasnije. Pogledajte sledeći kod:
Dim Godine(9) As String
Danas = 1985
Godine(Danas – 1981) = "Godina je 1985"
Debug.Print Godine(4)
U ovom isečku kreirali smo niz od deset članova, sa indeksima od 0 do 9. Kada treba da pristupimo elementu niza, podatku vezanom za 1985. godinu (element sa indeksom 4), moramo da oduzimamo ovu vrednost od 1981. Uporedite prethodni kod sa sledećim programskim kodom, gde smo niz ograničili i sa gornje, i sa donje strane:
Dim Godine(1981 To 1990) As String
Danas = 1985
Godine(Godine) = "Godina je 1985"
Debug.Print Godine(1985)
Ovaj kod je mnogo jednostavniji za pisanje, lakši za razumevanje, i mnogo lakši za održavanje, posebno u velikim aplikacijama.
Pratite Krstaricu na www.krstarica.com