Procedures en functies gebruiken

Hieronder wordt het basisgebruik van procedures en functies in LibreOffice Basic beschreven.

Notitiepictogram

Wanneer u een nieuwe module maakt, voegt LibreOffice Basic automatisch een SUB genaamd 'Main' in. Deze standaardnaam heeft absoluut geen invloed op de volgorde of het startpunt van een LibreOffice BASIC-project. U kunt de naam van deze SUB ook gerust wijzigen.


Notitiepictogram

Sommige beperkingen zijn van toepassing op namen van publiekevariabelen, subs en functies. Gebruik niet dezelfde naam als die van een module in eenzelfde bibliotheek.


Met behulp van procedures (SUBS) en functies (FUNCTIONS) kunt u een gestructureerd overzicht behouden door een programma in logische stukken te verdelen.

Een voordeel van procedures en functies is dat, wanneer u eenmaal een programmacode met taakcomponenten ontwikkeld hebt, u deze code in een ander project kunt gebruiken.

Variabelen doorgeven aan procedures (SUB) en functies (FUNCTION)

Variabelen kunnen aan procedures en functies doorgegeven worden. De SUB of FUNCTION moet gedeclareerd worden om parameters te verwachten:


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

De SUB wordt met de volgende syntaxis aangeroepen:


SubName(Value1, Value2,...)

De parameters die aan een SUB worden doorgegeven, moeten passen bij de parameters die in de SUB-declaratie gespecificeerd zijn.

Hetzelfde proces geldt voor FUNCTIONS. Functies geven daarnaast altijd een functieresultaat. Het resultaat van een functie wordt gedefinieerd door de retourwaarde aan de functienaam toe te wijzen:


Function FunctionName(Parameter1 As Type, Parameter2 As Type,...) As Type
Programmacode
FunctionName=resultaat
End Function

De FUNCTION wordt met de volgende syntaxis aangeroepen:


Variabele=FunctieNaam(Parameter1, Parameter2,...)
Tippictogram

U kunt ook de volledige naam gebruiken om een procedure of functie op te roepen:
Bibliotheek.Module.Macro()
Zo kunt u de volgende opdracht gebruiken om de AutoTekst-macro uit de Gimmicks-bibliotheek op te roepen:
Gimmicks.AutoText.Main()


Variabelen op waarde of verwijzing doorgeven

Parameters kunnen op verwijzing of op waarde aan een SUB of FUNCTION doorgegeven worden. Tenzij anders aangegeven wordt een parameter altijd op verwijzing doorgegeven. Dit betekent dat een SUB of FUNCTION de parameter krijgt en de waarde kan lezen en wijzigen.

Als u een parameter op waarde wilt doorgeven, voegt u het sleutelwoord "ByVal" vóór de parameter in wanneer u een SUB of FUNCTION aanroept, bijvoorbeeld:


Resultaat = Functie(ByVal Parameter)

In dit geval wordt de oorspronkelijke inhoud van de parameter niet gewijzigd door de FUNCTION, omdat alleen de waarde verkregen wordt en niet de parameter zelf.

Bereik van variabelen

Een variabele gedefinieerd binnen een SUB of een FUNCTIE, blijft slechts geldig totdat de procedure is beëindigd. Dit is bekend als een "local" variabele. In veel gevallen hebt u een variabele nodig die geldig is in alle procedures, in elke module van alle bibliotheken, of nadat een SUB of FUNCTIE is beëindigd.

Variabelen buiten een SUB of FUNCTION declareren


Global VarName As TYPENAME

De variabele is geldig zolang de LibreOffice-sessie duurt.


Public VarName As TYPENAME

De variabele is geldig in alle modules.


Private VarName As TYPENAME

De variabele is alleen geldig in deze module.


DIM VarNaam als TYPENAAM

De variabele is alleen geldig in deze module.

Voorbeeld van privé variabelen

Zorg ervoor dat alle privé variabelen privé zijn door alle modules heen door in te stellen CompatibilityMode(true).


' ***** Module1 *****
Private myText As String
Sub initMyText
    myText = "Hallo"
    Print "In module1 : ", mijnTekst
End Sub
 
' ***** Module2 *****
'Option Explicit
Sub demoBug
    CompatibilityMode( true )
    initMyText
    ' Geeft een lege string weer
    ' (of verhoogt de fout voor Optie Expliciet)
    Print "Now in module2 : ", mijnTekst
End Sub

Inhoud van variabelen opslaan na afsluiten van een SUB of FUNCTION


Static VarName As TYPENAME

De variabele behoudt zijn waarde tot de FUNCTION of SUB een volgende keer worden aangeroepen. De declaratie moet in een SUB of FUNCTION bestaan.

Het retourwaardetype van een FUNCTION specificeren

Net als bij variabelen moet er een type-aanduidingsteken na de functienaam opgenomen worden, of het type aangeduid met 'As' en het overeenkomstige sleutelwoord aan het einde van de parameterlijst om het type retourwaarde van de functie te definiëren, bijvoorbeeld:


Function WordCount(WordText As String) As Integer