Ús de procediments i de funcions
A continuació es descriu l'ús bà sic de procediments i funcions al LibreOfficeDev Basic.
Quan creeu un mòdul nou, el LibreOfficeDev Basic insereix automà ticament una SUB denominada "Main". Este nom per defecte no té res a veure amb l'orde ni amb el punt d'inici d'un projecte del LibreOfficeDev Basic. Podeu canviar el nom d'esta SUB amb seguretat.
S'apliquen certes restriccions per als noms de les variables, subs i funcions públiques. No podeu utilitzar el mateix nom que un mòdul de la mateixa biblioteca.
Els procediments (SUBS) i les funcions (FUNCTIONS) vos ajuden a mantindre una visió general estructurada separant un programa en parts lògiques.
Un avantatge dels procediments i de les funcions és que, un cop heu desenvolupat un codi de programa que conté components de tasca, podeu utilitzar este codi en un altre projecte.
Pas de variables a procediments (SUB) i funcions (FUNCTION)
Les variables es poden passar tant a procediments com a funcions. La SUB o FUNCTION s'ha de declarar perquè esperi els parà metres:
Sub SubName(Parameter1 As Type, Parameter2 As Type,...)
Codi de programa
End Sub
La SUB es crida mitjançant la sintaxi següent:
SubName(Value1, Value2,...)
Els parà metres passats a una SUB han d'ajustar-se als especificats a la declaració de SUB.
El mateix procés és aplicable a FUNCTIONS. A més, les funcions sempre retornen un resultat de funció. El resultat d'una funció es defineix assignant el valor de retorn al nom de la funció:
Function FunctionName(Parameter1 As Type, Parameter2 As Type,...) As Type
Codi de programa
FunctionName=Result
End Function
La FUNCTION es crida mitjançant la sintaxi següent:
Variable=FunctionName(Parameter1, Parameter2,...)
També podeu utilitzar el nom complet per cridar un procediment o una funció:
Biblioteca.Mòdul.Macro()
Per exemple, per a cridar la macro Autotext des de la biblioteca Gimmicks, utilitzeu l'orde següent:
Gimmicks.AutoText.Main()
Pas de variables per valor o referència
Els parà metres es poden passar a una SUB o a una FUNCTION per referència o per valor. A menys que s'indiqui el contrari, un parà metre sempre es passa per referència. Això significa que una SUB o una FUNCTION obté el parà metre i pot llegir-ne i modificar-ne el valor.
Si voleu passar un parà metre per valor, inseriu la paraula clau "ByVal" davant del parà metre quan crideu una SUB o FUNCTION, per exemple:
Resultat = Funció(ByVal Parà metre)
En este cas, el contingut original del parà metre no es modificarà amb la FUNCTION perquè només obté el valor i no el mateix parà metre.
Àmbit de variables
Una variable definida entre una SUB o FUNCTION, només serà và lida fins que no se isca del procediment. Això es coneix com a variable "local". En molts casos, necessiteu que una variable siga và lida en tots els procediments, en tots els mòduls de totes les biblioteques, o després de eixir d'una SUB o FUNCTION.
Declaració de variables fora d'una SUB o FUNCTION
Global VarName As TYPENAME
La variable és và lida mentre duri la sessió del LibreOfficeDev.
Public VarName As TYPENAME
La variable és và lida a tots els mòduls.
Private VarName As TYPENAME
La variable només és và lida en este mòdul.
Dim VarName As TYPENAME
La variable només és và lida en este mòdul.
Exemple de variables privades
Forceu que les variables privades siguen privades entre mòduls establint CompatibilityMode(true).
' ***** Module1 *****
Private myText As String
Sub initMyText
myText = "Hola"
Print "al mòdul1 : ", myText
End Sub
' ***** Module2 *****
'Option Explicit
Sub demoBug
CompatibilityMode( true )
initMyText
' Torna una cadena buida
' (or raises error for Option Explicit)
Print "Ara al mòdul2 : ", myText
End Sub
Com guardar el contingut d'una variable després d'eixir d'una SUB o FUNCTION
Static VarName As TYPENAME
La variable manté el seu valor fins a la propera vegada que s'introdueix la FUNCTION o la SUB. La declaració ha d'existir a dins d'una SUB o FUNCIÓ.
Especificació del tipus de valor de retorn d'una FUNCTION
Igual que amb les variables, heu d'incloure el carà cter de declaració de tipus després del nom de la funció, o el tipus indicat per "As" i la paraula clau corresponent al final de la llista de parà metres per definir el tipus de valor de retorn de la funció, per exemple:
Function WordCount(WordText As String) As Integer