Použitie procedúr a funkcií

Nasledujúca časť popisuje základné použitie procedúr a funkcií v LibreOffice Basic.

Note Icon

Ak vytvoríte nový modul, LibreOffice Basic automaticky vloží SUB nazvaný "Main". Tento východiskový názov nemá nič spoločné s poradím alebo počiatočným bodom projektu v LibreOffice Basic. Túto procedúru je možné bez obáv premenovať.


Note Icon

Pre názvy verejných premenných, procedúr a funkcií platia isté obmedzenia. Nesmiete použiť rovnaký názov ako je názov modulu v tej istej knižnici.


Procedúry (SUB) a funkcie (FUNCTION) vám pomáhajú udržovať štruktúru programu rozdelením na logické celky.

Jednou z výhod procedúr a funkcií je to, že už raz zapísané časti plniace určité úlohy je možné využiť i v iných projektoch.

Odovzdávanie premenných procedúram (SUB) a funkciám (FUNCTION)

Premenné je možné odovzdávať procedúram i funkciám. SUB alebo FUNCTION musí byť deklarovaná tak, aby očakávalo parametre:


Sub SubName(Parameter1 As Type, Parameter2 As Type,...)
Kód programu
End Sub

SUB zavoláte pomocou nasledujúcej syntaxe:


SubName(Value1, Value2,...)

Paremetre odovzdané SUB musia zodpovedať tým, ktoré sú špecifikované v deklarácii SUB.

Rovnaký postup platí i pre FUNCTION. Naviac funkcie vždy vracajú výsledok. Výsledok funkcie sa určí tak, že sa názvu funkcie priradí výsledná hodnota:


Function FunctionName(Parameter1 As Type, Parameter2 As Type,...) As Type
Kód programu
NázovFuncie=Výsledok
End Function

FUNCTION sa volá pomocou nasledujúcej syntaxe:


Premenna=NazovFunkcie(Parameter1, Parameter2,...)
Tip Icon

Procedúru alebo funkciu je tiež možné volať plne kvalifikovaným názvom.
Knižnica.Modul.Makro()
Napríklad chcete zavolať makro Autotext z knižnice Gimmicks:
Gimmicks.AutoText.Main()


Odovzdávanie premenných hodnotou alebo odkazom

Parametre pre SUB alebo FUNCTION je možné odovzdať buď odkazom alebo hodnotou. Pokiaľ nie je určené inak, vždy sa odovzdáva parameter odkazom. To znamená, že SUB alebo FUNCTION môže čítať a upravovať hodnotu parametra.

Pokiaľ chcete odovzdať parameter hodnotou, vložte pred parameter pri volaní SUB alebo FUNCTION kľúčové slovo "ByVal". Napríklad:


Výsledok = Funkcia(ByVal Parameter)

V tomto prípade nemôže FUNCTION zmeniť pôvodný obsah parametra, pretože získa iba jeho aktuálnu hodnotu a nie parameter samotný.

Viditeľnosť premenných

Premenná definovaná v rámci SUB alebo FUNCTION zostáva platná iba do ukončenia procedúry či funkcie. To je takzvaná "lokálna" premenná. V mnohých prípadoch potrebujete, aby premenná platila vo všetkých procedúrach, v každom module všetkých knižníc, alebo po ukončení SUB či FUNCTION.

Deklarácia premenných mimo SUB alebo FUNCTION


GLOBAL Premenna As TYP

Premenná je platná, pokiaľ neukončíte LibreOffice.


PUBLIC Premenna As TYP

Premenná je platná vo všetkých moduloch.


PUBLIC Premenna As TYP

Premenná je platná iba v tomto module.


Dim NazovPremennej As TYPENAME

Premenná je platná iba v tomto module.

Príklad pre súkromné premenné

Súkromné premenné nastavíte ako súkromné v rámci modulov pomocou CompatibilityMode(true).


' ***** Module1 *****
Private myText As String
Sub initMyText
    mojText = "Hello"
    print "in module1 : ", mojText
End Sub
 
' ***** Module2 *****
'Option Explicit
Sub demoBug
    CompatibilityMode( true )
    initMyText
    ' Vráti prázdny reťazec
    ' (or raises error for Option Explicit)
    print "Now in module2 : ", mojText
End Sub

Uloženie obsahu premennej po ukončení SUB alebo FUNCTION


STATIC Premenna As TYP

Premenna si zachová svoju hodnotu až do najbližšieho spustenia FUNCTION alebo SUB. Deklarovaná musí byť vo vnútri SUB alebo FUNCTION.

Určenie typu návratovej hodnoty FUNCTION

Podobne ako pri premennej pridajte za názov funkcie znak typovej deklarácie, alebo na koniec zoznamu parametrov typ určený "As" a zodpovedajúcim kľúčovým slovom. Napr.:


Function WordCount(WordText As String) As Integer