Vsebina
Kazalo 🔎︎

# Uporaba procedur in funkcij

Sledi opis osnov pri uporabi procedur in funkcij v LibreOffice Basicu.

Kadar začenjate nov modul, LibreOffice Basic samodejno vstavi SUB z imenom »Main«. To privzeto ime nima nikakršne zveze z razvrstitvijo ali začetno točko znotraj projekta v LibreOffice Basic. Skratka, ta SUB lahko mirno preimenujete.

Pri poimenovanju javnih spremenljivk, procedur in funkcij veljajo določene omejitve. Ne smete uporabljati imen, ki so enaka imenom modulov v isti knjižnici.

Procedure (SUBS) in funkcije (FUNCTIONS) omogočajo, da z delitvijo programa v logične enote ohranite strukturiran pregled nad njim.

Ena od koristi, ki jo imate zaradi procedur in funkcij, je tudi, da lahko programsko kodo, ki ste jo razvili za sestavne dele vaše naloge, uporabljate tudi kasneje v drugih projektih.

## Podajanje spremenljivk proceduram (SUB) in funkcijam (FUNCTION)

Spremenljivke lahko podajate tako proceduram kot tudi funkcijam. SUB ali FUNCTION morate ustrezno deklarirati, tako da pričakuje parametre:

    Sub SubName(Parameter1 As Type, Parameter2 As Type,...)
    Koda programa
    End Sub

SUB se potem uporablja z naslednjo skladnjo:

    SubName(Value1, Value2,...)

Kar se vrste parametrov, podanih SUB, tiče, morajo po vrsti ustrezati definiciji SUB.

Isti proces velja tudi za funkcije. Funkcije poleg tega vrnejo vrednost. Rezultat funkcije se definira tako, da se imenu funkcije pripiše želena vrednost:

    Function FunctionName(Parameter1 As Type, Parameter2 As Type,...) As Type
    Koda programa
    ImeFunkcije=Rezultat
    End Function

Funkcijo (FUNCTION) kličemo z naslednjo skladnjo:

    Spremenljivka=ImeFunkcije(Parameter1, Parameter2,...)

Za klic procedure ali funkcije lahko uporabljate tudi polno kvalificirano ime:
Knjižnica.Modul.Makro()
Če želite npr. uporabiti makro Samobesedilo iz knjižnice PredlogeZaPisma, vnesite naslednji ukaz:
PredlogeZaPisma.Samobesedilo.Main()

## Podajanje spremenljivk kot vrednosti ali sklicev

Parametre lahko SUB ali FUNCTION podaja kot vrednosti ali kot sklic. Če drugače ni navedeno, se parameter vedno poda kot sklic. To pomeni, da SUB ali FUNCTION parameter prevzame in da njegovo vrednost lahko bere in spreminja.

Če želite parameter podati samo kot vrednost, je morate pri klicu SUB ali FUNCTION pred parameter vstaviti ključni izraz »ByVal«. Primer:

    Rezultat = Funkcija(ByVal Parameter)

V tem primeru se vrednost spremenljivke, ki je parameter, po opravljenem klicu ne bo spremenila, ne glede na to, kaj se z njo v funkciji dogaja; funkcija dobi na razpolago samo vrednost parametra, vendar ne sklica nanjo.

## Doseg spremenljivk

Spremenljivka, ki ste jo definirali znotraj SUB ali FUNCTION, bo veljala samo toliko časa, dokler procedure ni konec. Spremenljivki zato rečemo, da je »lokalna«. V mnogo primerih potrebujete spremenljivko, ki je veljavna v vseh procedurah, v vseh modulih vseh knjižnic in/ali po izhodu iz določene procedure ali funkcije.

### Deklariranje spremenljivk izven SUB ali FUNCTION

    Global ImeSpr As IMEVRSTE

Spremenljivka je veljavna toliko časa, kolikor dolgo traja seja LibreOffice.

    Public ImeSpr As IMEVRSTE

Spremenljivka je veljavna v vseh modulih.

    Private ImeSpr As IMEVRSTE

Ta spremenljivka velja samo znotraj tega modula.

    Dim ImeSpr As IMEVRSTE

Ta spremenljivka velja samo znotraj tega modula.

### Primer zasebne spremenljivke

Vsili zasebnost spremenljivke v vseh modulih z nastavitvijo CompatibilityMode(true).

    ' ***** Module1 *****
    Private myText As String
    Sub initMyText
        mojeBesedilo = "Živijo"
        Print "V modulu1: ", mojeBesedilo
    End Sub

    ' ***** Module2 *****
    'Option Explicit
    Sub demoBug
        CompatibilityMode( true )
        initMyText
        ' Vrne prazen niz
        ' (ali vrne napako za Option Explicit)
        Print "Zdaj v modulu2: ", mojeBesedilo
    End Sub

### Shranjevanje vsebine spremenljivke po zaključku SUB ali FUNCTION

    Static ImeSpr As IMEVRSTE

Spremenljivka ohrani svojo vrednost do naslednjega klica FUNCTION ali SUB. Deklaracija se mora nahajati znotraj SUB ali FUNCTION.

## Določitev vrste vrednosti, ki jo vrača FUNCTION

Ko pri spremenljivkah uporabite tudi pri funkcijah znak za deklaracijo vrste z imenom funkcije, ali pa vrsto za ključno besedo »As« in pa ustrezno ključno besedo na koncu seznama parametrov – z njo določite, kakšne vrste je rezultat, ki ga funkcija vrača. Primer:

    Function WordCount(WordText As String) As Integer