AnvÀnda procedurer och funktioner
I följande avsnitt beskrivs den grundlÀggande anvÀndningen av procedurer och funktioner i LibreOfficeDev Basic.
NÀr du skapar en ny modul infogar LibreOfficeDev Basic automatiskt en subrutin som heter "Main". Standardnamnet har inget att göra med ordningen eller startpunkten för ett LibreOfficeDev Basic-projekt. Du kan byta namn pÄ den hÀr subrutinen om du vill.
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,...)
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 LibreOfficeDev-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
' (or raises error for 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