Uporaba procedur, funkcij in lastnosti

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

note

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.


note

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:


  SubName(Value1, 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, Parameter2,...)

Lastnosti združujejo skladnjo procedur in funkcij. Lastnost 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
tip

Za klic procedure, funkcije in lastnosti 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 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

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

Podprite nas!