Procedures en functies gebruiken
Hieronder wordt het basisgebruik van procedures en functies in LibreOffice Basic beschreven.
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.
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,...)
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