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