AnvÀnda procedurer och funktioner

I följande avsnitt beskrivs den grundlÀggande anvÀndningen av procedurer och funktioner i LibreOffice Basic.

Symbolen Info

NÀr du skapar en ny modul infogar LibreOffice Basic automatiskt en subrutin som heter "Main". Standardnamnet har inget att göra med ordningen eller startpunkten för ett LibreOffice Basic-projekt. Du kan byta namn pÄ den hÀr subrutinen om du vill.


Symbolen Info

Det finns vissa begrÀnsningar i hur publika variabler, subrutiner och funktioner kan namnges. Du kan inte anvÀnda samma namn som pÄ moduler som finns i samma bibliotek.


Genom att anvÀnda procedurer (SUB) och funktioner (FUNCTIONS) kan du upprÀtthÄlla en strukturerad översikt genom att dela upp ett program i logiska delar.

En fördel med procedurer och funktioner Àr att nÀr du har utvecklat en programkod som innehÄller aktivitetskomponenter kan du anvÀnda samma kod i andra projekt.

Skicka procedurer (SUB) och funktioner (FUNCTION)

Variabler kan skickas till bÄde procedurer och funktioner. Du mÄste ange att en subrutin eller funktion ska förvÀnta sig parametrar:


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

Du anropar en SUB med följande syntax:


SubName(Value1, Value2,...)

De parametrar som skickas till en SUB mÄste matcha de som angetts i subrutin-deklarationen.

Detsamma gÀller för en funktion som ska returnera ett funktionsresultat. Resultatet kan definieras precis före slutet av funktionen genom att funktionsnamnet och en parameter tilldelas vÀrdet som ska returneras av funktionen. (se exemplet).


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

Du anropar en FUNCTION med följande syntax:


Variabel=FunctionName(Parameter1, Parameter2,...)
Symbolen Tips

Du kan ocksÄ anvÀnda det fullstÀndiga namnet om du vill anropa en procedur eller funktion:
Library.Module.Macro()
Om du till exempel vill anropa makrot Autotext frÄn biblioteket Gimmicks anvÀnder du följande kommando:
Gimmicks.AutoText.Main()


Skicka variabler efter vÀrde eller referens

Parametrar kan skickas till en subrutin eller en funktion efter antingen referens eller vÀrde. Om inget annat angetts skickas en parameter alltid efter referens. Det betyder att en subrutin eller en funktion fÄr parametern och kan lÀsa och Àndra dess vÀrde.

Om du vill skicka en parameter efter vÀrde infogar du nyckelordet "ByVal" framför parametern nÀr du anroper en subrutin eller funktion, exempelvis:


Resultat = Funktion(ByVal Parameter)

I det hÀr fallet Àndras inte det ursprungliga parameterinnehÄllet eftersom bara vÀrdet och inte sjÀlva parametern skickas till funktionen.

VariabelomrÄden

En variabel som definieras i en subrutin eller funktion Àr bara giltig tills proceduren avslutas. Detta kallas en "lokal" variabel. Ofta mÄste en variabel vara giltig i alla procedurer, i varje modul, i alla bibliotek, eller efter att en subrutin eller funktion har avslutats.

Deklarera variabler utanför en SUB eller FUNCTION


Global Variabelnamn As TYPENAME

Variabeln Àr giltig sÄ lÀnge som LibreOffice-sessionen pÄgÄr.


Public Variabelnamn As TYPENAME

Variabeln Àr giltig i alla moduler.


Private Variabelnamn As TYPENAME

Variabeln Àr bara giltig i den hÀr modulen.


Dim Variabelnamn As TYPENAME

Variabeln Àr bara giltig i den hÀr modulen.

Exempel pÄ privata variabler

Tvinga privata variabler att vara privata över moduler genom att ange CompatibilityMode(true).


' ***** Module1 *****
Private myText As String
Sub initMyText
    myText = "Hej"
    Print "In module1 : ", myText
End Sub
 
' ***** Module2 *****
'Option Explicit
Sub demoBug
    CompatibilityMode( true )
    initMyText
    ' Returnerar nu tom strÀng
    ' (eller fel uppstÄr för Option Explicit)
    Print "Now in module2 : ", myText
End Sub

Spara variabelinnehÄll efter att en subrutin eller funktion avslutats


Static Variabelnamn As TYPENAME

Variabelns vÀrde bibehÄlls tills nÀsta funktion eller subrutin startar. Deklarationen mÄste anges i en subrutin eller funktion.

Ange returvÀrde för en funktion

Om du vill definiera returvÀrde för funktionen inkluderar du ett typdeklarationstecken efter funktionsnamnet eller typen som indikeras av "As". Ange ocksÄ motsvarande nyckelord i slutet av parameterlistan, till exempel:


Function WordCount(WordText As String) As Integer