Vlastný dátový typ
Jazyk Basic nám dovoľuje definovať si vlastný dátový typ. Tak, ako Integer je predefinované celé číslo, môžeme si určiť svoje vlastné typy dát a pracovať s nimi. Často sa stretávame pri zložitejších dátových typov (čiže nejde o primitívny dátový typ ako je napríklad Integer, Double atď) s pojmom štruktúrovaný dátový typ alebo skrátene štruktúra.
1. program: Definovanie svojho vlastného dátového typu
REM definujeme vlastný dátový typ Type Vec Meno As String Dlzka As Integer Sirka As Integer Vyska As Integer Farba As String End Type Sub Makricko REM deklarácia vlastného dátového typu Dim mojTyp As Vec REM priradenie do premenných vlastného dátového typu mojTyp.Meno = "Televízia" mojTyp.Dlzka = 30 mojTyp.Sirka = 45 mojTyp.Vyska = 50 mojTyp.Farba = "modrú" REM a vypíšeme MsgBox "Špecifikácia veci: " & mojTyp.Meno & " má dlžku " & mojTyp.Dlzka & " cm, šírku " & mojTyp.Sirka & " cm, vyšku " & mojTyp.Vyska & " cm a farbu " & mojTyp.Farba End Sub
Rozbor makra: V rámci makra sme si vytvorili vlastný dátový typ Vec s nejakými vlastnosťami, ktoré reprezentujú premenné typu String a Integer. Následne deklarujeme premennú, ktorá je dátového typu Vec a po deklarácii priradíme hodnoty premenným nášho dátového typu a vypíšeme ich na obrazovku.
2. program: Všetky dovolené spôsoby deklarácie vlastného dátového typu v procedúre
Type Pracka Meno As String Dlzka As Integer Sirka As Integer Vyska As Integer Farba As String Cena As Integer End Type Type Vrtacka Meno As String Dlzka As Integer Sirka As Integer Vyska As Integer Farba As String Cena As Integer End Type Type umyvackaRiadu Meno As String Dlzka As Integer Sirka As Integer Vyska As Integer Farba As String Cena As Integer End Type Sub Makricko Dim pracka As Pracka Dim vrtacka As new Vrtacka Dim umyvacka : umyvacka = CreateObject("umyvackaRiadu") pracka.Meno = "Pracka" pracka.Dlzka = 21 pracka.Sirka = 45 pracka.Vyska = 77 pracka.Farba = "zelenu" pracka.Cena = "200" vrtacka.Meno = "Vrtačka" vrtacka.Dlzka = 77 vrtacka.Sirka = 88 vrtacka.Vyska = 99 vrtacka.Farba = "sivu" vrtacka.Cena = "156" umyvacka.Meno = "Umyvačka riadu" umyvacka.Dlzka = 41 umyvacka.Sirka = 45 umyvacka.Vyska = 44 umyvacka.Farba = "modru" umyvacka.Cena = "258" MsgBox "Špecifikácia veci: " & pracka.Meno & " má dlžku " & pracka.Dlzka & " cm, šírku " & pracka.Sirka & " cm, vyšku " & pracka.Vyska & " cm, farbu " & pracka.Farba & " a stojí " & pracka.Cena & " eur" & Chr(10) & "Špecifikácia veci: " & vrtacka.Meno & " má dlžku " & vrtacka.Dlzka & " cm, šírku " & vrtacka.Sirka & " cm, vyšku " & vrtacka.Vyska & " cm, farbu " & vrtacka.Farba & " a stojí " & vrtacka.Cena & " eur" & Chr(10) & "Špecifikácia veci: " & umyvacka.Meno & " má dlžku " & umyvacka.Dlzka & " cm, šírku " & umyvacka.Sirka & " cm, vyšku " & umyvacka.Vyska & " cm, farbu " & umyvacka.Farba & " a stojí " & umyvacka.Cena & " eur" End Sub
Rozbor makra: V tomto príklade si precvíčite deklarácie vlastných dátových štruktúr. Za zmienku stojí tretí typ deklarácie. Pripomeňme si ju: Dim umyvacka : umyvacka = CreateObject("umyvackaRiadu"). Ako chápať dvojbodku? Jednoducho, dvojbodka znamená že vykonaj prvý príkaz na ľavo a zároveň nezábudni i na ten pravo. Spája dve príkazy súčasne.
Príkaz With
Keďže programátori sú od prírody leniví ľudia a nechce sa im veľa písať, tak pre dátové štruktúry (či už vlastné alebo definované v knižniciach) existuje skratka. Ukážeme si ju v príklade a inšpirujeme sa z prvého programu.
3. program: Využitie príkazu With
Type Vec Meno As String Dlzka As Integer Sirka As Integer Vyska As Integer Farba As String End Type Sub Makricko Dim mojTyp As Vec REM použitie príkazu With With mojTyp .Meno = "Televízia" .Dlzka = 30 .Sirka = 45 .Vyska = 50 .Farba = "modrú" MsgBox "Špecifikácia veci: " & .Meno & " má dlžku " & .Dlzka & " cm, šírku " & .Sirka & " cm, vyšku " & .Vyska & " a farbu " & .Farba End With End Sub
Rozbor makra: Vidíte, že miesto pracného písania premennej pred jej vlastnosťou, sme príkazom With určili, že pred bodkou sa automaticky myslí meno premennej. Ušetrili sme pár písmen a pár sekúnd času. Ale zíde sa to vtedy, ak píšeme veľké makro s mnohými procedúrami a dedline je onedlho.