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 vyvolá chybu pro Option Explicit)

    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