Použití procedur a funkcí

Následující část popisuje základní použití procedur a funkcí v LibreOffice Basic.

Ikona poznámky

Když vytvoříte nový modul, LibreOffice Basic automaticky vloží SUB nazvaný "Main". Tento výchozí název nemá nic společného s pořadím nebo počátečním bodem projektu v LibreOffice Basic. Tuto proceduru je možné bez obav přejmenovat.


Ikona poznámky

Jistá omezení se týkají jmen vašich veřejných proměnných, procedur a funkcí. Nesmíte použít stejné jméno, jako některý modul stejné knihovny.


Procedury (SUB) a funkce (FUNCTION) vám pomáhají udržovat strukturu programu rozdělením na logické celky.

Jednou z výhod procedur a funkcí je to, že již jednou napsané části plnící určité úkoly, je možné využít i v jiných projektech.

Předávání proměnných procedurám (SUB) a funkcím (FUNCTION)

Proměnné lze předávat procedurám i funkcím. SUB nebo FUNCTION musí být deklarováno tak, aby očekávalo parametry:


Sub SubName(Parameter1 As Type, Parameter2 As Type,...)
Programový kód
End Sub

SUB zavoláte pomocí následující syntaxe:


SubName(Value1, Value2,...)

Parametry předané SUB musí odpovídat těm, které jsou určeny v deklaraci SUB.

Stejný postup platí i pro FUNCTION. Navíc funkce vždy vrací výsledek. Výsledek funkce se určí tak, že se názvu funkce přiřadí výsledná hodnota:


Function FunctionName(Parameter1 As Type, Parameter2 As Type,...) As Type
Programový kód
NazevFunkce=Vysledek
End Function

FUNCTION se volá pomocí následující syntaxe:


Promenna=NazevFunkce(Parametr1, Parametr2,...)
Ikona tipu

Proceduru nebo funkci je také možné volat plně kvalifikovaným názvem.
Knihovna.Modul.Makro()
Například chcete zavolat makro Autotext z knihovny Gimmicks:
Gimmicks.AutoText.Main()


Předávání proměnných hodnotou nebo odkazem

Parametry lze SUB nebo FUNCTION předat buď odkazem nebo hodnotou. Pokud není určeno jinak, předává se parametr vždy odkazem. To znamená, že SUB nebo FUNCTION může číst a upravovat hodnotu parametru.

Pokud chcete předat parametr hodnotou, vložte před parametr při volání SUB nebo FUNCTION klíčové slovo "ByVal". Například:


Vysledek = Funkce(ByVal Parametr)

V tomto případě nemůže FUNCTION změnit původní obsah parametru, protože získá jen jeho aktuální hodnotu a ne parametr samotný.

Viditelnost proměnných

Proměnná definovaná v rámci SUB nebo FUNCTION zůstává platná jen do ukončení procedury či funkce. To je takzvaná "lokální" proměnná. V mnoha případech potřebujete, aby proměnná platila ve všech procedurách, v každém modulu všech knihoven, nebo po ukončení SUB či FUNCTION.

Deklarace proměnných mimo SUB nebo FUNCTION


Global Promenna As TYP

Proměnná je platná, dokud neukončíte LibreOffice.


Public Promenna As TYP

Proměnná je platná ve všech modulech.


Private Promenna As TYP

Proměnná je platná pouze v tomto modulu.


Dim Promenna As TYP

Proměnná je platná pouze v tomto modulu.

Příklad pro soukromé proměnné

Soukromé proměnné nastavíte jako soukromé v rámci modulů pomocí CompatibilityMode(true).


' ***** Module1 *****
Private myText As String
Sub initMyText
    myText = "Ahoj"
    Print "V modulu 1 : ", myText
End Sub
 
' ***** Module2 *****
'Option Explicit
Sub demoBug
    CompatibilityMode( true )
    initMyText
    ' Vrátí prázdný řetězec
    ' (nebo v případě Option Explicit vyvolá chybu)
    Print "Teď v modulu 2 : ", myText
End Sub

Uložení obsahu proměnné po ukončení SUB nebo FUNCTION


Static Promenna As TYP

Proměnná si zachová svou hodnotu, až do příštího spuštění FUNCTION nebo SUB. Uvnitř SUB nebo FUNCTION musí být deklarována.

Určení typu návratové hodnoty FUNCTION

Podobně jako u proměnné přidejte za název funkce znak typové deklarace, nebo na konec seznamu parametrů typ určený "As" a odpovídajícím klíčovým slovem. Např.:


Function WordCount(WordText As String) As Integer

Podpořte nás!