Uporaba procedur in funkcij

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

Ikona opombe

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.


Ikona opombe

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,...)
Ikona namiga

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