Portée et durée de vie des variables

From Apache OpenOffice Wiki
Jump to: navigation, search
doc OOo
Book.png

Dans Apache OpenOffice Basic, une variable est créée avec une durée de vie limitée, ainsi qu'une portée limitée qui détermine le point du programme à partir duquel elle peut être lue et utilisée dans d'autres parties du programme. La durée pendant laquelle une variable est conservée et les endroits depuis lesquels il est possible d'y accéder dépendent de son emplacement et de son type.

Variables locales

Les variables déclarées dans une fonction ou une procédure sont appelées variables locales :

Sub Test
  Dim MyInteger As Integer
  ' ...
End Sub

Les variables locales ne restent valides que durant l'exécution de la fonction ou de la procédure et sont ensuite réinitialisées à zéro. À chaque nouvel appel de la fonction, les valeurs générées précédemment ne sont plus disponibles.

Pour conserver les valeurs précédentes, il faut définir la variable comme Static :

Sub Test
  Static MyInteger As Integer
  ' ...
End Sub
Documentation note.png Contrairement à VBA, Apache OpenOffice Basic s'assure que le nom d'une variable locale n'est pas utilisé simultanément comme nom de variable globale et privée dans l'en-tête du module. Lorsqu'une application VBA est portée vers Apache OpenOffice Basic, il faut modifier tous les noms de variable dupliqués.

Variables du domaine public

Les variables du domaine public sont définies dans la section d'en-tête d'un module par le mot-clé Dim. Ces variables sont accessibles à tous les modules de leur bibliothèque :

Module A :

Dim A As Integer
Sub Test
  Flip
  Flop
End Sub
 
Sub Flip
 A = A + 1
End Sub

Module B :

Sub Flop
  A = A - 1
End Sub

La valeur de la variable A n'est pas modifiée par la fonction Test, mais elle est augmentée de un dans la fonction Flip et diminuée de un dans la fonction Flop. Ces deux modifications sont globales.

Vous pouvez également employer le mot-clé Public à la place de Dim pour déclarer une variable du domaine public :

Public A As Integer

Une variable du domaine public n'est accessible que durant l'exécution de la macro associée et est ensuite réinitialisée.

Variables globales

Du point de vue de leur fonction, les variables globales sont semblables aux variables du domaine public, si ce n'est que leurs valeurs sont conservées après l'exécution de la macro associée. Les variables globales sont déclarées dans la section d'en-tête d'un module avec le mot-clé Global :

Global A As Integer

Variables privées

Private ne sont accessibles que dans le module à l'intérieur duquel elles ont été définies. Pour définir une variable privée, utilisez le mot-clé Private :

Private MyInteger As Integer

Si plusieurs modules contiennent une variable Private portant le même nom, Apache OpenOffice Basic crée une variable différente pour chaque occurrence. Dans l'exemple suivant, chacun des modules A et B possède une variable Private appelée C. La fonction Test définit d'abord la variable Private dans le module A, puis la variable Private dans le module B.

Module A :

Private C As Integer
 
Sub Test
  SetModuleA      ' Sets the variable C from module A
  SetModuleB      ' Sets the variable C from module B
  ShowVarA        ' Shows the variable C from module A (= 10)
  ShowVarB        ' Shows the variable C from module B (= 20)
End Sub
 
Sub SetmoduleeA
  C = 10
End Sub
 
Sub ShowVarA
  MsgBox C        ' Shows the variable C from module A. 
End Sub

Module B :

 
Private C As Integer
 
Sub SetModuleB
  C = 20
End Sub
 
Sub ShowVarB
  MsgBox C        ' Shows the variable C from module B.
End Sub
Content on this page is licensed under the Public Documentation License (PDL).
Personal tools