Bruk av prosedyrar, funksjonar og eigenskapar

Her er ein omtale av grunnlaget for bruk av prosedyrar, funksjonar og eigenskapar i LibreOffice Basic.

note

NÄr du lagar ein ny modul, set LibreOffice Basic automatisk inn ein Sub med namnet «Main». Dette standardnamnet har ingenting med rekkjefÞlgja eller startpunktet for eit LibreOffice Basicprosjekt. Du kan trygt gi Sub-rutinen eit anna namn.


note

Set er nokre avgrensingar for kva namn du kan bruka pÄ PUBLIC-variablar, subrutinar, funksjonar og eigenskapar. Du kan ikkje bruka det same namnet som ein av modulane i det same biblioteket.


Prosedyrar (Sub-rutiner) funksjonar (Function) og eigenskapar (Property) er til hjelp for Ă„ halda eit strukturert oversyn ved Ă„ dela programmet opp i logiske delar.

Ein fordel med prosedyrar, funksjonar og eigenskapar er at nÄr du har laga ein programkode som inneheld aktivitetskomponentar, kan du bruka denne koden i eit anna prosjekt.

OverfĂžra variablar mellom prosedyrar, funksjonar og eigenskapar

Variablar kan overfÞrast til bÄde prosedyrar, funksjonar og eigenskapar. Sub, Function eller Property mÄ vera deklarerte for Ä kunna innehalda parameterar.


  Sub SubName(Parameter1 As TYPENAME, Parameter2 As TYPENAME,...)
      ' her kjem koden din
  End Sub

Sub vert kalla opp med denne syntaksen:


  SubName(Value1, Value2,...)

Parametera som skal overfÞrast til Sub mÄ passa med dei deklarerte for Sub.

Den same prosessen overfĂžrt til Function. I tillegg returnerer ein funksjon alltid eit resultat. Resultatet av ein funksjon vert definert ved Ă„ tilordna returverdien til funksjonsnamnet:


  Function FunctionName(Parameter1 As TYPENAME, Parameter2 As TYPENAME,...) As TYPENAME
      ' her kjem koden din
      FunctionName=Result
  End Function

Function vert kalla opp med denne syntaksen:


  Variable=FunctionName(Parameter1, Parameter2,...)

Eigenskapane kombinerer syntaksen for prosedyrar og funksjonar. Ein eigenskap treng til vanleg opp til ein parameter.


  Private _IsApproved As TYPENAME
  Property Get IsApproved As TYPENAME
      ' her kjem koden din
      IsApproved = some_computation
  End Property
  Property Let IsApproved(value As TYPENAME)
      ' her kjem koden din
      _IsApproved = computed_value
  End Property

Property vert kalla opp med denne syntaksen:


  var = IsApproved
  IsApproved = some_value
tip

Du kan ogsÄ bruka det fullstendige namnet til Ä kalle ein prosedyre, funksjon eller eigenskap:
Library.Module.Macro()
For eksempel kan du kalla opp Autotext-makroen frÄ Gimmicks-biblioteket, med denne kommandoen:
Gimmicks.AutoText.Main()


Å overfþra variablar som verdi eller referanse

Du kan senda parameterar til ein prosedyre, ein funksjon eller ein eigenskap anten som referanse eller verdi. Med mindre anna er angjeve, vert ein parameter alltid sendt som referanse. Det betyr at ein Sub, ein Function eller ein Property fÄr parameteren og kan lesa og endra verdien.

Dersom du vil overfÞra ein parameterverdi, set inn nÞkkelordet ByVal framfÞre parameteren nÄr du gjer oppkall til for eksempel ein Sub, ein Function eller ein Property:


  Function ReadOnlyParms(ByVal p2, ByVal p2)
      ' her kjem koden din
  End Function
  result = ReadOnlyParms(parm1, parm2)

I dette tilfellet vert innhaldet i parameteren ikkje endra sidan Function fÄr berre verdien og ikkje parameteren.

Definera valfrie parameterar

Funksjonar, prosedyrar og eigenskapar kan definerast med valfrie parameterar, for eksempel


  Sub Rounding(number, Optional decimals, Optional format)
      ' her kjem koden din
  End Sub

VariabelomrÄde

A variable defined within a Sub, a Function or a Property, only remains valid until the procedure is exited. This is known as a "local" variable. In many cases, you need a variable to be valid in all procedures, in every module of all libraries, or after a Sub, a Function or a Property is exited.

Declaring Variables Outside a Sub a Function or a Property


Global VarName As TYPENAME

The variable is valid as long as the LibreOffice session lasts.


Public VarName As TYPENAME

Variabelen er gyldig i alle modulane.


Private VarName As TYPENAME

Variabelen er berre gyldig innfĂžre denne modulen.


Dim VarName As TYPENAME

Variabelen er berre gyldig innfĂžre denne modulen.

Eksempel pÄ private variablar

Enforce private variables to be private across modules by setting CompatibilityMode(True).


  ' ***** Module1 *****
  Private myText As String
  Sub initMyText
      minTekst = "Hallo"
      Print "I modul1: ", minTekst
  End Sub
   
  ' ***** Module2 *****
  'Option Explicit
  Sub demoBug
      CompatibilityMode( True )
      initMyText
      ' Returnerer nÄ ein tom streng
      ' (eller det oppstÄr feil for Option Explicit)
      Print "NĂ„ i modul2: ", minTekst
  End Sub

Saving Variable Content after Exiting a Sub a Function or a Property


  Static VarName As TYPENAME

The variable retains its value until the next time the a Function, Sub or Property is entered. The declaration must exist inside a Sub, a Function or a Property.

Specifying the Return Value Type of a Function or a Property

As with variables, include a type-declaration character after the function name, or the type indicated by As and the corresponding data type at the end of the parameter list to define the type of the function or property's return value, for example:


  Function WordCount(WordText As String) As Integer