Všeobecne tak môžeme rozdeliť tieto funkcie do troch častí:
- funkcie na určenie typu premennej,
- funkcie na určenie typu hodnoty v premennej,
- funkcie na prevod hodnôt (medzi rôznymi typmi premennými).
Funkcie na určenie typu premenných
Určenie typu premenných poskytujú dve funkcie. Ich názvy sú TypeName a VarType.
Čo vracajú tieto funkcie, si ukážeme v nasledujúcich riadkoch:
TypeName |
VarType |
Typ premennej |
Empty | 0 | nedeklarovaná premenná |
Null | 1 | neplatná premenná resp. žiadna |
Integer | 2 | celočíselná premenná |
Long | 3 | dlhá celočíselná premenná |
Single | 4 | racionálne čísla s menšou presnosťou |
Double | 5 | racionálne čísla s väčšou presnosťou |
Date | 7 | dátum a čas |
String | 8 | textový reťazec |
Object | 9 | objekt |
Boolean | 11 | logická premenná |
1. príklad: Ukážka správania sa funkcii TypeName a VarType
Sub TypeNameandVarType REM začiatok procedúry Dim premennaVariant As Variant REM deklarácia premennej typu Variant Print TypeName(premennaVariant) REM výpis funkcie TypeName Print VarType(premennaVariant) REM výpis funkcie VarType Print premennaVariant REM výpis hodnoty premennej premennaVariant = Null Print TypeName(premennaVariant) Print VarType(premennaVariant) REM pri neplatnej premennej je nemožné ju vypísať premennaVariant = 93 Print TypeName(premennaVariant) Print VarType(premennaVariant) Print premennaVariant premennaVariant = 93.93 Print TypeName(premennaVariant) Print VarType(premennaVariant) Print premennaVariant premennaVariant = "93.93" Print TypeName(premennaVariant) Print VarType(premennaVariant) Print premennaVariant premennaVariant = "vesmir" Print TypeName(premennaVariant) Print VarType(premennaVariant) Print premennaVariant premennaVariant = True Print TypeName(premennaVariant) Print VarType(premennaVariant) Print premennaVariant End Sub REM koniec procedúry
Výstup: porovnajte výsledky so stĺpcami hodnôt, ktoré môžu nadobudnúť funkcie TypeName a VarType.
2. príklad: A čo ak miesto premennej Variant dáme premennú Single?
Sub TypeNameandVarType Dim premenna As Single Print TypeName(premenna) Print VarType(premenna) Print premenna premenna = 93 Print TypeName(premenna) Print VarType(premenna) Print premenna premenna = 93.93 Print TypeName(premenna) Print VarType(premenna) Print premenna premenna = "93.93" Print TypeName(premenna) Print VarType(premenna) Print premenna premennaVariant = "vesmir" Print TypeName(premenna) Print VarType(premenna) Print premenna premennaVariant = True Print TypeName(premenna) Print VarType(premenna) Print premenna End Sub
Výstup: TypeName a VarType budem mať stále len jeden výstup a to Single! Treba si uvedomiť, že ak raz zadeklarujeme premennú už sa jej typ nemení.
Funkcie na určenie typu hodnôt v premennej
Často sa stáva pri programovaní makier, že potrebujeme overiť, či napríklad vstup od užívateľa je číslo, text či dátum. Dnes si ukážeme dve funkcie, ktoré overujú typ hodnoty v premennej.
¨Volajú sa IsNumeric a IsDate. IsNumeric kontroluje, či hodnota je číslom a IsDate kontroluje dátum. Tieto funkcie vracajú Boolean premennú, ktorá oznamuje, či je alebo není kontrolovaným typom premennej.
3. príklad: Použitie funkcii IsNumeric a IsDate.
Sub IsNumericandIsDate REM začiatok procedúry Dim premennaVariant As Variant REM deklarácia premennej premennaVariant = 93 REM priradenie hodnoty Print IsNumeric(premennaVariant) REM vypísanie funkcie IsNumeric Print IsDate(premennaVariant) REM vypísanie funkcie IsDate premennaVariant = "93" Print IsNumeric(premennaVariant) Print IsDate(premennaVariant) premennaVariant = "93EdoBoldizar" Print IsNumeric(premennaVariant) Print IsDate(premennaVariant) premennaVariant = "21.02.2016" Print IsNumeric(premennaVariant) Print IsDate(premennaVariant) End Sub REM koniec procedúry
Výstup: true/false podľa toho, čo je číslo a čo dátum.
Treba si uvedomiť, že funkcie IsNumeric, IsDate a ďalšie funkcie pracujú ako regulárne výrazy! Ak ste si skúsili naprogramovať makro z 3 príkladu, vidíte že je jedno, ako číslo bolo reprezentované, či ako Integer alebo String (textový reťazec).
Funkcie na prevod hodnôt
V jazyku Basic existujú funkcie, ktoré prevádzajú jeden typ premennej na druhý.
Funkcie |
Vlastnosť |
CInt | prevod na celočíselnú premennú |
CLng | prevod na dlhú celočíselnú premennú |
CSng | prevod na racionálne čísla s menšou presnosťou |
CDbl | prevod na racionálne čísla v väčšou presnosťou |
CDate | prevod na dátum a čas |
CStr | prevod na textový reťazec |
CBool | prevod na logickú premennú |
4. príklad: Ukážeme si príklad s funkciou CDate
Sub CDate1 REM začiatok procedúry Dim cislo As Double, datum As Date REM deklarácie premenných cislo = 40000.5 REM priradenie hodnoty Print cislo REM výpis premennej typu Double datum = CDate(cislo) REM priradenie hodnoty s funkciou CDate Print datum REM výpis premennej typu Date End Sub REM koniec procedúry
Výstup: Ako som v dávnejšom článku hovoril dátum sa datuje číselne od dátumu 30. decembra 1899. Hodnota 40000.5 vyjadruje dátum a čas: 06. 07. 2009 12:00:00. Pre zopakovanie, jeden dielik 0.1 predstavuje 2 hodiny a 40 minút.