Utilisation des procédures et des fonctions
Cette rubrique décrit l'utilisation de base des procédures et des fonctions de LibreOfficeDev Basic.
Lors de la création d'un nouveau module, LibreOfficeDev Basic insère automatiquement une procédure SUB appelée "Main". Ce nom par défaut n'a strictement aucune relation avec l'ordre ou le point de départ d'un projet LibreOfficeDev Basic. Vous pouvez donc renommer cette procédure SUB en toute sécurité.
Certaines restrictions s'appliquent aux noms des subs des variables publiques et des fonctions. Vous ne devez pas utiliser le même nom que l'un des modules de la même bibliothèque.
Les procédures (SUB) et les fonctions (FUNCTION) vous aident à conserver une présentation structurée en décomposant un programme en parties logiques.
L'un des avantages des procédures et des fonctions est qu'une fois que vous avez développé un code de programme contenant des composants de tâche, vous pouvez l'utiliser dans un autre projet.
Transmission de variables aux procédures(SUB) et aux fonctions (FUNCTION)
Des variables peuvent être transmises aux procédures et aux fonctions. Les éléments SUB ou FUNCTION doivent être déclarés pour accepter des paramètres :
Sub SubName(Parameter1 As Type, Parameter2 As Type,...)
Code de programme
End Sub
L'élément SUB est appelé à l'aide de la syntaxe suivante :
SubName(Value1, Value2,...)
Les paramètres transmis à l'élément SUB doivent correspondre à ceux spécifiés dans la déclaration de SUB.
Le même processus doit s'appliquer aux fonctions (FUNCTION) pour que celles-ci puissent renvoyer un résultat. Ce résultat peut être défini juste avant d'avoir atteint la fin de la fonction en assignant le nom de la fonction et un paramètre à la valeur à renvoyer par la fonction :
Function FunctionName(Parameter1 As Type, Parameter2 As Type,...) As Type
Code de programme
FunctionName=Result
End Function
FUNCTION est appelée à l'aide de la syntaxe suivante :
Variable=FunctionName(Parameter1, Parameter2,...)
Pour appeler une procédure ou une fonction, vous pouvez également utiliser le nom complet suivant :
Library.Module.Macro()
. Par exemple, pour appeler la macro Autotexte depuis la bibliothèque Trucs et astuces, utilisez la commande suivante :
Gimmicks.AutoText.Main()
Transmission de paramètres par valeur ou par référence
Les paramètres peuvent être transmis à un élément SUB ou FUNCTION par référence ou par valeur. Sauf indication contraire, les paramètres sont toujours transmis par référence. Cela signifie qu'une procédure ou une fonction reçoit un paramètre et peut lire et modifier sa valeur.
Si vous souhaitez transmettre un paramètre par valeur, insérez le mot-clé "ByVal" avant le paramètre lorsque vous appelez SUB ou FUNCTION, par exemple :
Result = Function(ByVal Parameter)
Dans ce cas, le contenu d'origine du paramètre n'est pas modifié par la fonction, car elle ne reçoit que la valeur et non pas le paramètre en lui-même.
Portée des variables
Une variable définie dans un élément SUB ou FUNCTION reste valide uniquement jusqu'à la fermeture de la procédure. L'on se réfère à ce type de variable comme variable "locale". Cependant, dans bien des cas, une variable doit rester valide dans toutes les procédures, dans tous les modules de toutes les bibliothèques, ou après la fermeture d'un SUB ou FUNCTION.
Déclaration de variables en dehors d'un élément SUB ou FUNCTION
Global VarName As TYPENAME
La variable est valide tant que la session LibreOfficeDev est ouverte.
Public VarName As TYPENAME
La variable est valide dans tous les modules.
Private VarName As TYPENAME
La variable est valide dans ce module.
Dim VarName As TYPENAME
La variable est valide dans ce module.
Exemple pour les variables privées
Force les variables privées à être privées à travers les modules en paramétrant CompatibilityMode(true).
' ***** Module1 *****
Private myText As String
Sub initMyText
monTexte = "Bonjour"
Print "In module1 : ", monTexte
End Sub
' ***** Module2 *****
'Option Explicit
Sub demoBug
CompatibilityMode( true )
initMyText
' Now renvoie une chaîne vide
' (ou affiche une erreur pour Option Explicit)
Print "Now in module2 : ", monTexte
End Sub
Enregistrement du contenu d'une variable après la fermeture d'un élément SUB ou FUNCTION
Static VarName As TYPENAME
La variable conserve sa valeur jusqu'à la prochaine ouverture d'une instruction Function ou de Sub. La déclaration doit exister à l'intérieur d'un élément SUB ou FUNCTION.
Spécification du type de valeur de retour de FUNCTION
Insérez, comme pour les variables, un caractère de déclaration de type après le nom de la fonction, ou le type indiqué par "As" et le mot-clé approprié à la fin de la liste des paramètres pour définir le type de la valeur de retour de la fonction, par exemple :
Function WordCount(WordText As String) As Integer