7. Enumeratori, polja i strukture
Enumeratori:
enumeratori se koriste kako bi se definirao specijalan tip varijabli koji je gotovo identican tipu long s iznimkom sto su neke od mogucih vrijednosti reprezentirane imenom zbog lakseg snalazenja. u stvari, to je skup konstanti koje sluze zajednickoj svrsi. enumeratori se definiraju izvan svih funkcija te se kasnije mogu definirati varijable enumeriranog tipa.
Private Enum eBoje ebCrna = 0 ebBijela = 1 ebCrvena = 2 End Enum Sub Main() Dim lngBoje as eBoje lngBoje = ebBijela 'vrijednost varijable lngBoje postavljamo na vrijednost 1 End Sub
Polja:
polje je skup varijabli istog tipa. varijable unutar polja su organizirane unutar jedne ili vishe dimenzija. Znajuci poziciju neke varijable u svim dimenzijama polja moguce je pristupiti toj varijabli. Svaka dimenzija polja ima preciziranu gornju i donju vrijednost. Postoje dva tipa polja: polja fiksne velicine i polja dinamicke velicine. Polja dinamicke velicine je moguce vise puta redimenzionirati (promjeniti velicinu ili broj dimenzija) dok se poljima fiksne velicine dimenzije i njihove velicine odredjuju prilikom deklaracije i nemogu se kasnije mijenjati.
- Polja fiksne velicine
primjer deklaracije polja fiksne velicine:
Dim aTablicMnozenja (1 To 10, 1 To 10) as LongU ovom primjeru smo deklarirali polje koje smo nazvali "aTablicaMnozenja". To je dvodimenzionalno polje gdje obje dimenzije imaju 10 clanova. Donja granica obje dimenzije je 1 dok je gornja 10 (1 To 10). Kao sto vidimo deklaracije dimenzija polja su odvojena zarezom. Ovo polje ima ukupno 100 clanova (10*10). Tip polja (odnosno varijabli u polju) je Long.
- Polja dinamicke velicine
primjer deklaracije polja dinamicke velicine:
Dim aTablicaMnozenja () as LongOvdje smo deklarirali polje pod imenom aTablicaMnozenja. Tip polja je Long dok dimenzije kao sto vidite nisu odredjene. To VB-u govori da se radi o polju dinamicke velicine. Redimenzioniranje odnosno odredjivanje broja i velicine dimenzija vrsi se na sljedeci nacin:
Redimenzioniranje polja dinamicke velicine:
ReDim aTablicaMnozenja (9 , 9)Ovime dobivamo polje koje je po svemu identicno gornje navedenom polju fiksne velicine. Znaci imamo dvoje dimenzije od kojih je svaka velicine 10. Zasto? Zato sto doljnja granica dimenzija nije definirana (unosom samo jednog atributa VB pretpostavlja da se radi o gornjoj granici) kao u gornjem primjeru (1 To 10). Bez unesene donje granice VB koristi defaultnu vrijednost koja je 0. Od 0 do 9 imamo 10 vrijednosti isto kao od 1 do 10.
Treba napomenuti da se redimenzioniranjem gubi prijasnji sadrzaj polja. To se moze izbjeci dodavanjem atributa Preserve
Redim Preserve aTablicaMnozenja (9, 10)Nazalost, ovakvom upotrebom ReDim funkcije mozemo mijenjeti samo zadnju dimenziju polja kao u primjeru. Za ostale situacije trebat cete podatke negdje pohraniti prije redimenzioniranja kako ih nebi zgubili.
Otkrivanje gornjih i donjih granica polja (UBound i LBound)
Vrijednosti gornje i donje granice polja mozemo dobiti dvijema naredbama: LBound i UBound. Funkcija LBound vraca vrijednost donje granice neke dimenzije nekog polja dok UBound vraca gornju granicu.
Ubound (aTablicaMnozenja , 1)
vraca gornju granicu prve dimenzije aTablicMnozenja polja.
LBound (aTablicaMnozenja , 2)
vraca donju granicu druge dimenzije aTablicMnozenja polja.
Pristup varijablama u polju
Sve sto nam treba jest vrijednost svake dimenzije polja gdje se varijabla nalazi:
aTablicaMnozenja (3 , 7) = 666
*polja se cesto kombiniraju sa petljama kako bi se u par linija koda proslo sve clanove polja.
Strukture:
Kombiniranjem vishe varijabli razlicitih tipova dobivamo strukture iliti korisnicki definirane tipove (UDT). Strukture koristimo kada zelimo grupirati vishe povezanih varijabli razlicitih tipova. Strukturu definiramo unutar Type...End Type bloka na nivou modula odnosno izvan svih funkcija.
Primjer definiranja strukture:
Type Kontakt Ime as String Prezime as String TelefonskiBroj as String End Type
Deklaracija varijable strukturno definiranog tipa:
Dim udtMojKontakt as Kontakt
Pristup varijablama unutar strukture:
udtMojKontakt.Ime = "Mirko"
*strukture se cesto koriste u kombinaciji sa poljima. stvara se polje tipa strukture koje se potom obicno obradjuje petljama. tako bi sa ovakvim primjerom mogli imati sve svoje kontakte spremljene u jednom polju. takav primjer mozete ocekivati u vodicu sa primjerima.


