Vsebina

# Uporaba procedur, funkcij in lastnosti

Sledi opis osnov pri uporabi procedur, funkcij in lastnosti v programskem jeziku LibreOffice Basic.

Kadar začenjate nov modul, LibreOffice Basic samodejno vstavi Sub z imenom »Main«. To privzeto ime ni na noben način povezano z razvrstitvijo ali začetno točko znotraj projekta v LibreOffice Basic. Skratka, ta Sub lahko mirno preimenujete.

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

Procedure (podprogrami Sub), funkcije (Function) in lastnosti (Property) omogočajo, da z delitvijo programa v logične enote ohranite strukturiran pregled nad njim.

Ena od koristi, ki jo imate zaradi procedur, funkcij in lastnosti, 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, funkcijam in lastnostim

Spremenljivke lahko podajate tako proceduram kot tudi funkcijam in lastnostim. Sub, Function in Property morate ustrezno deklarirati, da pričakuje parametre:

      Sub SubName(Parameter1 As TYPENAME, Parameter2 As TYPENAME,...)
          ' vaša koda sodi sem
      End Sub

Sub kličemo z naslednjo skladnjo:

      [Call] SubName( [Parameter1:=]Value1, [Parameter2:=]Value2, ...)

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

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

      Function FunctionName(Parameter1 As TYPENAME, Parameter2 As TYPENAME,...) As TYPENAME
          ' vaša koda sodi sem
          FunctionName=Result
      End Function

Function kličemo z naslednjo skladnjo:

      Variable = FunctionName( [Parameter1:=]Value1, [Parameter2:=]Value2, ...)

Lastnosti združujejo skladnjo procedur in funkcij. Lastnost oz. property običajno zahteva le en parameter.

      Private _IsApproved As TYPENAME
      Property Get IsApproved As TYPENAME
          ' vaša koda sodi sem
          IsApproved = some_computation
      End Property
      Property Let IsApproved(value As TYPENAME)
          ' vaša koda sodi sem
          _IsApproved = computed_value
      End Property

Property kličemo z naslednjo skladnjo:

      var = IsApproved
      IsApproved = some_value

Za klic procedure, funkcije in lastnosti lahko uporabljate tudi polno kvalificirano ime:
[Call] Knjižnica.Modul.Makro(), kjer je Call neobvezen.
Če želite npr. uporabiti makro Samobesedilo iz knjižnice PredlogeZaPisma, vnesite naslednji ukaz:
PredlogeZaPisma.Samobesedilo.Main()

## Podajanje spremenljivk kot vrednosti ali sklicev

Parametre lahko proceduri, funkciji ali lastnosti podate kot vrednosti ali kot sklic. Če drugače ni navedeno, se parameter vedno poda kot sklic. To pomeni, da Sub, Function ali Property parameter prevzame in da njegovo vrednost lahko bere in spreminja.

Če želite parameter podati samo kot vrednost, je morate pri klicu Sub, Function oz. Property pred parameter vstaviti ključni izraz ByVal. Primer:

      Function ReadOnlyParms(ByVal p2, ByVal p2)
          ' vaša koda sodi sem
      End Function
      result = ReadOnlyParms(parm1, parm2)

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

## Definiranje neobveznih parametrov

Funkcije, procedure in lastnosti lahko določite z neobveznimi parametri. Primer:

      Sub Rounding(number, Optional decimals, Optional format)
          ' vaša koda sodi sem
      End Sub

## Položajni argumenti ali argumenti ključnih besed

Ko kličete funkcijo ali podprogram, lahko podate argumente po položaju ali po imenu. Podajanje po položaju pomeni, da argumente podate v zaporedju, kot so določeni v funkciji ali podprogramu. Podajanje po imenu zahteva, da argumentu dodate predpono imena ustreznega parametra, sledita pa dvopičje in enačaj (:=). Argumenti ključnih besed se lahko pojavijo v poljubnem zaporedju. Glejte funkcijo Basic Replace(), kjer so navedeni takšni primeri.

Če želite podati manj parametrov, za argumente uporabite ključne besede. Podajanje vrednosti za manjše število parametrov glede na položaj zahteva podajanje vrednosti za vse parametre pred njimi, ne glede na to, ali so obvezni. To zagotavlja, da so vrednosti na pravih mestih. Če podate parametre po imenu – z argumenti ključnih besed – lahko izpustite vse druge vmesne argumente.

## Doseg spremenljivk

Spremenljivka, ki ste jo definirali znotraj Sub, Function ali Property, 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 Sub, Function oz. Property.

### Deklaracija spremenljivk izven Sub, Function in Property

    Global VarName As TYPENAME

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

    Public VarName As TYPENAME

Spremenljivka je veljavna v vseh modulih.

    Private VarName As TYPENAME

Ta spremenljivka velja samo znotraj tega modula.

    Dim VarName As TYPENAME

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, Property in Property

      Static VarName As TYPENAME

Spremenljivka ohrani svojo vrednost do prihodnjega klica Function, Sub ali Property. Deklaracija se mora nahajati znotraj Sub, Function oz. Property.

## Določitev vrste vrednosti, ki jo vrne Function oz. Property

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 vrsto podatka na koncu seznama parametrov – z njo določite, kakšne vrste je rezultat, ki ga vrača funkcija oz. lastnost. Primer:

      Function WordCount(WordText As String) As Integer

Podobne teme

Funkcija CompatibilityMode()

Ukaz Option Explicit

Ključna beseda Optional

Ukaz Property

Ukaz Static