Použitie procedúr a funkcií
Nasledujúca časť popisuje základné použitie procedúr a funkcií v LibreOffice Basic.
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ť.
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,...)
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