Bruk av prosedyrar og funksjonar
Dette avsnittet handlar om den grunnleggjande bruken av prosedyrar og funksjonar i LibreOffice Basic.
Når du lagar ein ny modul, vil LibreOffice Basic automatisk setja inn ein SUM med namnet «Main». Dette standardnamnet har ingenting å gjera med rekkjefølgja eller startpunktet for eit LibreOffice Basic-prosjekt. Du kan endra namnet på denne subrutinen til kva som helst.
Det er ein del restriksjonar på kva namn du kan bruka for «public» variablar, subrutinar og funksjonar. Du kan ikkje bruka same namnet som er brukt på ein av modulane i det same biblioteket.
Bruk av prosedyrar (SUBS) og funksjonar (FUNCTIONS) vil hjelpa deg med å halda ei strukturell oversikt ved at programmet vert inndelt i logiske bitar.
Ein annan fordel med prosedyrar og funksjonar er at når dei først er skrivne, kan dei også brukast i andre prosjekt.
Å overføra variablar til prosedyrar (SUB) og funksjonar (FUNCTION)
Variablar kan verta overførte både til prosedyrar og funksjonar. SUB og FUNCTION må vera definerte til å kunne ta i mot parametrar:
Sub SubName(Parameter1 As Type, Parameter2 As Type,...)
Programkode
End Sub
Ein SUB vert kalla opp med denne syntaksen:
SubName(Value1, Value2,...)
Parametra som vert overførte til ein SUB må vera av same slag som er gjeven i deklarasjonen.
Det same gjeld for FUNCTION. I tillegg vil ein funksjon alltid returnera resultatet av funksjonen. Dette vert gjort ved å tilordna returverdien til funksjonsnamnet:
Function FunctionName(Parameter1 As Type, Parameter2 As Type,...) As Type
Programkode
FunctionName=Result
End Function
Funksjonen vert kalla opp med denne syntaksen:
Variabel = Funskajonsnamn(Parameter1, Parameter2, …)
Du kan også bruka det fullstendige namnet for å kalla opp ein prosedyre eller ein funksjon:
Library.Module.Macro()
For eksempel kan du kalla opp makroen Autotext frå biblioteket Gimmics med denne kommandoen:
Gimmicks.AutoText.Main()
Å overføra variablar som verdi eller referanse
Parameterar kan sendast til ein SUB eller ein FUNCTION anten som ein referanse eller som ein verdi. Dersom ingenting anna er spesifisert, vil ein parameter alltid verta overført via ein referanse. Dette betyr at ein SUB eller ein FUNCTION mottar parameteren og kan lesa og endra verdien av denne.
Dersom du ønskjer å overføre parameteren via ein verdi, set du inn ordet «ByVal» framføre parameteren når du kallar opp ein SUB eller ein FUNCTION. Eksempel:
Result = Function(ByVal Parameter)
I dette tilfellet vert innhaldet i parameteren ikkje endra av FUNCTION sidan han berre får verdien og ikkje sjølve parameteren.
Variabelområde
Ein variabel som er definert inne i ein SUB eller ein FUNCTION er gyldig berre inne i prosedyren. Dette er det som vert kalla ein «lokal» variabel. Ofte har du i tillegg også bruk for variablar som er tilgjengelege i heile programmet, inne i alle modulane og også etter at ein SUB eller FUNCTION er avslutta.
Deklarering av variablar utanfor ein SUB eller ein FUNCTION
Global Variabelnamn As TYPENAME
Variabelen er gyldig så lenge LibreOffice-økta varer.
Public Variabelnamn As TYPENAME
Variabelen er gyldig i alle modulane.
Private Variabelnamn As TYPENAME
Variabelen er berre gyldig innføre denne modulen.
Dim Variabelnamn As TYPENAME
Variabelen er berre gyldig innføre denne modulen.
Eksempel på private variablar
Tving private variablar til å vere private på tvers av modular med innstillinga 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
Å lagra innhaldet av ein variabel etter at ein SUB eller FUNCTION er avslutta
Static Variabelnamn As TYPENAME
Variabelen beheld verdien sin til neste gong den same FUNCTION eller SUB vert brukt. Deklarasjonen må avsluttast inne i ein SUB eller FUNCTION.
Spesifiserer returverdien for ein FUNCTION
Viss du vil definera returverdien for funksjonen, tek du med eit typedeklarasjonsteikn etter funksjonsnamnet eller typen indikert med «As». Skriv også inn tilsvarande nøkkelord på slutten av parameterlista, for eksempel:
Function WordCount(WordText As String) As Integer