Programovanie makier v LibreOffice: Funkcie určené na prácu s premennými

LO.png V jazyku Basic sa často stretávame s funkciami pre prácu s typmi premennými a typmi hodnôt.  

Všeobecne tak môžeme rozdeliť tieto funkcie do troch častí:

  1. funkcie na určenie typu premennej,
  2. funkcie na určenie typu hodnoty v premennej,
  3. 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ú TypeNameVarType.

Č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 IsNumericIsDate. 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.

(Jako ve škole) Průměr: 1.00 | Hodnotilo: 3
 

Přidat názor

 

Nejsou podporovány žádné značky, komentáře jsou jen čistě textové. Více o diskuzích najdete v nápovědě. Diskuzi můžete sledovat pomocí RSS kanálu.

 
Eduard Boldižár

Eduard Boldižár

Som redaktorom stránky astrotech.cz. Mám 24 rokov. Čas trávim v IT škole. Medzi moje záľuby patrí astronómia, sci-fi literatúra a programovanie.

 
 
 
woo jaw demo hz