Brug af procedurer og funktioner
Her følger en beskrivelse af den grundlæggende brug af procedurer og funktioner i LibreOffice Basic.
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.
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,...)
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
' Returnerer nu en tom streng
' (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