Brug af procedurer og funktioner

Her følger en beskrivelse af den grundlæggende brug af procedurer og funktioner i LibreOffice Basic.

Noteikon

Når du opretter et nyt modul, vil LibreOffice Basic automatisk indsætte en SUB kaldet "Main". Dette standardnavn har inget at gøre med rækkefølgen eller startpunktet for et LibreOffice Basic projekt. Du kan uden problemer omdøbe denne SUB.


Noteikon

Der gælder visse begrænsninger for navne på dine offentlige variabler, procedurer (sub) og funktioner. Du må ikke bruge det samme navn som på et af modulerne i det samme bibliotek.


Procedurer (SUBS) og funktioner (FUNCTIONS) hjælper dig med at holde et struktureret overblik ved at inddele et program i logisk stykker.

En fordel ved procedurer og funktioner er, at nĂĄr du har udviklet programkode, som indeholder opgavekomponenter, kan du bruge denne kode i et andet projekt.

Overførsel af variable til procedurer (SUB) og Funktioner (FUNCTION)

Variable kan overføres til både procedurer og funktioner. SUB eller FUNCTION skal være erklæret til at forvente parametre:


Sub SubName(Parameter1 As Type, Parameter2 As Type,...)
Programkode
End Sub

SUB'en kaldes ved brug af følgende syntaks:


SubName(Value1, Value2,...)

Parametrene der bliver overført til en SUB skal passe til de der er angivet i SUB-erklæringen.

Den samme proces gælder for FUNKTIONER. I tilføjelse hertil, returnerer funktioner altid et funktionsresultat. Resultatet af en funktion defineres ved tildeling af returværdien til funktionsnavnet:


Function FunctionName(Parameter1 As Type, Parameter2 As Type,...) As Type
Programkode
FunctionName=Resultat
End Function

Funktionen kaldes ved brug af følgende syntaks:


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

Du kan ogsĂĄ bruge det fuldt kvalificerede navn til at kalde en procedure eller funktion:
Bibliotek.Modul.Makro()
Hvis du for eksempel vil kalde makroen Autotext fra biblioteket Gimmicks, skal du bruge følgende kommando:
Gimmicks.Autotext.Main()


Overførsel af variable ved værdi eller henvisning

Parametre kan overføres til en SUB eller en FUNCTION enten ved reference eller ved værdi. Medmindre andet er specificeret, vil en parameter altid overføres ved reference. Det betyder, at en SUB eller en FUNCTION får parameteren og kan læse og rette sin værdi.

Hvis du vil overføre en parameter ud fra værdi, indsæt nøgleordet "ByVal" foran parameteren når du kalder en SUB eller en FUNCTION, for eksempel:


Resultat = Funktion(ByVal-parameter)

I dette tilfælde, vil det originale indhold af parameteren ikke blive ændret af funktionen, siden det kun får værdien og ikke selve parameteren.

Omfang pĂĄ variable

En variabel, der er defineret indenfor en SUB eller FUNCTION, forbliver kun gyldig indtil proceduren er afsluttet. Dette er kendt som en "lokal" variabel. I mange tilfælde har du brug for, at en variabel skal være gyldig i alle procedurer, i alle moduler i alle biblioteker, eller efter at en SUB eller FUNCTION er afsluttet.

Erklæring af variable udenfor en SUB eller FUNCTION


GLOBAL VarName As TYPENAME

Variablen er gyldig så længe, LibreOffice-sessionen varer.


PUBLIC VarName As TYPENAME

Denne variabel er gyldig i alle moduler.


PUBLIC VarName As TYPENAME

Denne variabel er kun gyldig i dette modul.


PUBLIC VarNavn As TYPENAVN

Denne variabel er kun gyldig i dette modul.

Eksempel for private variable

Tving private variable til at være private på tværs af moduler med indstillingen CompatibilityMode(true).


' ***** Module1 *****
Private myText As String
Sub initMyText
    myText = "Hej"
    Print "I modul1: ", minTekst
End Sub
 
' ***** Module2 *****
'Option Explicit
Sub demoBug
    CompatibilityMode( true )
    initMyText
    ' Now returns empty string
    ' (eller markerer fejl ved Option Explicit)
    Print "Nu i modul2: ", minTekst
End Sub

At gemme variabelindhold efter afslutning af en SUB eller FUNCTION


STATIC VarName As TYPENAME

Variablen bevarer sin værdi indtil næste gang samme FUNCTION eller SUB tilgås. Erklæringen skal findes indenfor en SUB eller en FUNCTION.

Angivelse af returværditypen af en funktion

Som med variable, medtag et type-erklæringstegn efter funktionsnavnet, eller typen vist med "As" og det tilsvarende nøgleord ved slutningen af parameterlisten for at definere typen af funktionens returværdi, for eksempel:


Function WordCount(WordText As String) As Integer