Difference between revisions of "NL/Documentation/BASIC Guide/Scope of Variables"

From Apache OpenOffice Wiki
Jump to: navigation, search
(Created page with "{{NL/Documentation/BASICGuideTOC/v2 |ShowPrevNext=block |ShowPrevPage=block |PrevPage=NL/Documentation/BASIC Guide/Arrays |NextPage=NL/Documentation/BASIC Guide/Constants |lan...")
 
 
(4 intermediate revisions by the same user not shown)
Line 8: Line 8:
 
{{DISPLAYTITLE:Bereik en levensduur van variabelen}}
 
{{DISPLAYTITLE:Bereik en levensduur van variabelen}}
 
__NOTOC__  
 
__NOTOC__  
Een variabele in {{OOo}} BASIC heeft een beperkte levensduur en een beperkt bereik met betrekking tot waaruit hij kan worden gelezen en gebruikt in andere programma-onderdelen. De tijd dat een variabele wordt behouden, evenals van waar hij kan worden benaderd, is afhankelijk van zijn gespecificeerde lokatie en type.
+
Een variabele in {{AOo}} BASIC heeft een beperkte levensduur en een beperkt bereik met betrekking tot waaruit hij kan worden gelezen en gebruikt in andere programma-onderdelen. De tijd dat een variabele wordt behouden, evenals van waar hij kan worden benaderd, is afhankelijk van zijn gespecificeerde locatie en type.
  
 
== Lokale variabelen ==
 
== Lokale variabelen ==
Line 14: Line 14:
 
Variabelen die zijn gedeclareerd in een functie of een procedure worden lokale variabelen genoemd:
 
Variabelen die zijn gedeclareerd in een functie of een procedure worden lokale variabelen genoemd:
  
<source lang="oobas">
+
<syntaxhighlight lang="oobas">
 
Sub Test
 
Sub Test
 
   Dim MyInteger As Integer
 
   Dim MyInteger As Integer
 
   ' ...
 
   ' ...
 
End Sub
 
End Sub
</source>
+
</syntaxhighlight>
  
 
Lokale variabelen zijn slechts geldig zo lang als de functie of procedure wordt uitgevoerd, en worden dan opnieuw ingesteld op nul. Elke keer als de functie wordt aangeroepen zijn de eerder gegenereerde waarden niet meer beschikbaar.
 
Lokale variabelen zijn slechts geldig zo lang als de functie of procedure wordt uitgevoerd, en worden dan opnieuw ingesteld op nul. Elke keer als de functie wordt aangeroepen zijn de eerder gegenereerde waarden niet meer beschikbaar.
Line 25: Line 25:
 
Om de voorgaande waarden te behouden moet u de variabele definiëren als <tt>Static</tt>:
 
Om de voorgaande waarden te behouden moet u de variabele definiëren als <tt>Static</tt>:
  
<source lang="oobas">
+
<syntaxhighlight lang="oobas">
 
Sub Test
 
Sub Test
 
   Static MyInteger As Integer
 
   Static MyInteger As Integer
 
   ' ...
 
   ' ...
 
End Sub
 
End Sub
</source>
+
</syntaxhighlight>
  
{{Documentation/VBAnote|Anders dan in VBA, zorgt {{OOo}} BASIC er voor dat de naam van een lokale variabele niet tegelijkertijd wordt gebruikt als een globale en een private variabele in de kop van de module. Wanneer u een toepassing vanuit VBA porteert naar {{OOo}} BASIC moet u eventuele dubbele namen voor variabelen wijzigen.}}
+
{{Documentation/VBAnote|Anders dan in VBA, zorgt {{AOo}} BASIC er voor dat de naam van een lokale variabele niet tegelijkertijd wordt gebruikt als een globale en een private variabele in de kop van de module. Wanneer u een toepassing vanuit VBA porteert naar {{AOo}} BASIC moet u eventuele dubbele namen voor variabelen wijzigen.}}
  
== Public Domain Variables ==
+
== Variabelen in domein Public ==
  
Public domain variables are defined in the header section of a module by the keyword <tt>Dim</tt>. These variables are available to all of the modules in their library:
+
Publieke domein variabelen worden gedefinieerd in het kopgedeelte van een module door het sleutelwoord <tt>Dim</tt>. Deze variabelen zijn beschikbaar voor alle modules in hun bibliotheek:
  
 
Module A:
 
Module A:
  
<source lang="oobas">
+
<syntaxhighlight lang="oobas">
 
Dim A As Integer
 
Dim A As Integer
 
Sub Test
 
Sub Test
Line 50: Line 50:
 
  A = A + 1
 
  A = A + 1
 
End Sub
 
End Sub
</source>
+
</syntaxhighlight>
  
 
Module B:
 
Module B:
  
<source lang="oobas">
+
<syntaxhighlight lang="oobas">
 
Sub Flop
 
Sub Flop
 
   A = A - 1
 
   A = A - 1
 
End Sub
 
End Sub
</source>
+
</syntaxhighlight>
  
The value of variable <tt>A</tt> is not changed by the <tt>Test</tt> function, but is increased by one in the <tt>Flip</tt> function and decreased by one in the <tt>Flop</tt> function. Both of these changes to the variable are global.
+
De waarde van de variabele <tt>A</tt> is niet veranderd door de functie <tt>Test</tt>, maar is verhoogd met één in de functie <tt>Flip</tt> en verlaagd met één in de functie <tt>Flop</tt>. Beide veranderingen in de variabele zijn globaal.
  
You can also use the keyword <tt>Public</tt> instead of <tt>Dim</tt> to declare a public domain variable:
+
U kunt ook het sleutelwoord <tt>Public</tt> gebruiken in plaats van <tt>Dim</tt> om een variabele in het domein Public te declareren:
  
<source lang="oobas">
+
<syntaxhighlight lang="oobas">
 
Public A As Integer
 
Public A As Integer
</source>
+
</syntaxhighlight>
  
A public domain variable is only available so long as the associated macro is executing and then the variable is reset.
+
Een variabele in het domein Public is alleen beschikbaar zo lang als de geassocieerde macro wordt uitgevoerd en daarna wordt de variabele opnieuw ingesteld.
  
== Global Variables ==
+
== Globale variabelen ==
  
In terms of their function, global variables are similar to public domain variables, except that their values are retained even after the associated macro has executed. Global variables are declared in the header section of a module using the keyword <tt>Global</tt>:  
+
Gelet op hun functie, zijn globale variabelen gelijk aan variabelen in het domein Public, met dien verstande dat hun waarden worden behouden, zelfs nadat de geassocieerde macro werd uitgevoerd. Globale variabelen worden gedeclareerd in het kopgedeelte van een module met behulp van het sleutelwoord <tt>Global</tt>:
  
<source lang="oobas">
+
<syntaxhighlight lang="oobas">
 
Global A As Integer
 
Global A As Integer
</source>
+
</syntaxhighlight>
  
== Private Variables ==
+
== Private variabelen ==
  
<tt>Private</tt> variables are only available in the module in which they are defined. Use the keyword <tt>Private</tt> to define the variable:
+
<tt>Private</tt> variabelen zijn alleen beschikbaar in die module waarin zij werden gedefinieerd. Gebruik het sleutelwoord <tt>Private</tt> om de variabele te definiëren:
  
<source lang="oobas">
+
<syntaxhighlight lang="oobas">
 
Private MyInteger As Integer
 
Private MyInteger As Integer
</source>
+
</syntaxhighlight>
  
If several modules contain a <tt>Private</tt> variable with the same name, {{OOo}} Basic creates a different variable for each occurrence of the name. In the following example, both module <tt>A</tt> and <tt>B</tt> have a <tt>Private</tt> variable called <tt>C</tt>. The <tt>Test</tt> function first sets the <tt>Private</tt> variable in module <tt>A</tt> and then the <tt>Private</tt> variable in module <tt>B</tt>.
+
Als verscheidene modules een <tt>Private</tt>-variabele bevatten met dezelfde naam, creëert {{OOo}} BASIC een afzonderlijke variabele voor elke keer dat de naam voorkomt. In het volgende voorbeeld, hebben zowel de module <tt>A</tt> als <tt>B</tt> een <tt>Private</tt>-variabele genaamd <tt>C</tt>. De functie <tt>Test</tt> stelt eerst de <tt>Private</tt>-variabele in module <tt>A</tt> in en dan de <tt>Private</tt>-variabele in module <tt>B</tt>.
  
 
Module A:
 
Module A:
  
<source lang="oobas">
+
<syntaxhighlight lang="oobas">
 
Private C As Integer
 
Private C As Integer
  
 
Sub Test
 
Sub Test
   SetModuleA      ' Sets the variable C from module A
+
   SetModuleA      ' Stelt de variabele C in van module A
   SetModuleB      ' Sets the variable C from module B
+
   SetModuleB      ' Stelt de variabele C in van module B
   ShowVarA        ' Shows the variable C from module A (= 10)
+
   ShowVarA        ' Geeft de variabele C weer van module A (= 10)
   ShowVarB        ' Shows the variable C from module B (= 20)
+
   ShowVarB        ' Geeft de variabele C weer van module B (= 20)
 
End Sub
 
End Sub
  
Line 105: Line 105:
  
 
Sub ShowVarA
 
Sub ShowVarA
   MsgBox C        ' Shows the variable C from module A.  
+
   MsgBox C        ' Geeft de variabele C weer van module A.  
 
End Sub
 
End Sub
</source>
+
</syntaxhighlight>
  
 
Module B:
 
Module B:
  
<source lang="oobas">  
+
<syntaxhighlight lang="oobas">  
 
Private C As Integer
 
Private C As Integer
 
   
 
   
Line 119: Line 119:
  
 
Sub ShowVarB
 
Sub ShowVarB
   MsgBox C        ' Shows the variable C from module B.
+
   MsgBox C        ' Geeft de variabele C weer van module B.
 
End Sub
 
End Sub
</source>
+
</syntaxhighlight>
  
Keep in mind that ShowVarB only shows the expected value of C (20) because Sub Test is keeping it in scope. If the calls to SetModuleB and ShowVarB are independent, e.g. SetModuleB is triggered from one toolbar button and ShowVarB is triggered from another toolbar button, then ShowVarB will display a C value of 0 since module variables are reset after each macro completion.
+
Onthoud dat ShowVarB alleen de verwachte waarde van C (20) weergeeft omdat Sub Test het in zijn bereik houdt. Als de aanroepen voor SetModuleB en ShowVarB onafhankelijk zijn, bijv. wanneer SetModuleB wordt geactiveerd door een knop op een werkbalk en ShowVarB wordt geactiveerd door een andere knop op de werkbalk, dan zal ShowVarB de waarde voor C als 0 weergeven omdat module-variabelen opnieuw worden ingesteld na elke voltooiing van de macro.
 
   
 
   
 
{{InterWiki Languages BasicGuide|articletitle=Documentation/BASIC Guide/Scope of Variables}}
 
{{InterWiki Languages BasicGuide|articletitle=Documentation/BASIC Guide/Scope of Variables}}
 
{{PDL1}}
 
{{PDL1}}

Latest revision as of 14:39, 9 February 2021

Book.png


Een variabele in Apache OpenOffice BASIC heeft een beperkte levensduur en een beperkt bereik met betrekking tot waaruit hij kan worden gelezen en gebruikt in andere programma-onderdelen. De tijd dat een variabele wordt behouden, evenals van waar hij kan worden benaderd, is afhankelijk van zijn gespecificeerde locatie en type.

Lokale variabelen

Variabelen die zijn gedeclareerd in een functie of een procedure worden lokale variabelen genoemd:

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

Lokale variabelen zijn slechts geldig zo lang als de functie of procedure wordt uitgevoerd, en worden dan opnieuw ingesteld op nul. Elke keer als de functie wordt aangeroepen zijn de eerder gegenereerde waarden niet meer beschikbaar.

Om de voorgaande waarden te behouden moet u de variabele definiëren als Static:

Sub Test
  Static MyInteger As Integer
  ' ...
End Sub
Documentation note.png VBA : Anders dan in VBA, zorgt Apache OpenOffice BASIC er voor dat de naam van een lokale variabele niet tegelijkertijd wordt gebruikt als een globale en een private variabele in de kop van de module. Wanneer u een toepassing vanuit VBA porteert naar Apache OpenOffice BASIC moet u eventuele dubbele namen voor variabelen wijzigen.


Variabelen in domein Public

Publieke domein variabelen worden gedefinieerd in het kopgedeelte van een module door het sleutelwoord Dim. Deze variabelen zijn beschikbaar voor alle modules in hun bibliotheek:

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

De waarde van de variabele A is niet veranderd door de functie Test, maar is verhoogd met één in de functie Flip en verlaagd met één in de functie Flop. Beide veranderingen in de variabele zijn globaal.

U kunt ook het sleutelwoord Public gebruiken in plaats van Dim om een variabele in het domein Public te declareren:

Public A As Integer

Een variabele in het domein Public is alleen beschikbaar zo lang als de geassocieerde macro wordt uitgevoerd en daarna wordt de variabele opnieuw ingesteld.

Globale variabelen

Gelet op hun functie, zijn globale variabelen gelijk aan variabelen in het domein Public, met dien verstande dat hun waarden worden behouden, zelfs nadat de geassocieerde macro werd uitgevoerd. Globale variabelen worden gedeclareerd in het kopgedeelte van een module met behulp van het sleutelwoord Global:

Global A As Integer

Private variabelen

Private variabelen zijn alleen beschikbaar in die module waarin zij werden gedefinieerd. Gebruik het sleutelwoord Private om de variabele te definiëren:

Private MyInteger As Integer

Als verscheidene modules een Private-variabele bevatten met dezelfde naam, creëert Apache OpenOffice BASIC een afzonderlijke variabele voor elke keer dat de naam voorkomt. In het volgende voorbeeld, hebben zowel de module A als B een Private-variabele genaamd C. De functie Test stelt eerst de Private-variabele in module A in en dan de Private-variabele in module B.

Module A:

Private C As Integer
 
Sub Test
  SetModuleA      ' Stelt de variabele C in van module A
  SetModuleB      ' Stelt de variabele C in van module B
  ShowVarA        ' Geeft de variabele C weer van module A (= 10)
  ShowVarB        ' Geeft de variabele C weer van module B (= 20)
End Sub
 
Sub SetModuleA
  C = 10
End Sub
 
Sub ShowVarA
  MsgBox C        ' Geeft de variabele C weer van module A. 
End Sub

Module B:

 
Private C As Integer
 
Sub SetModuleB
  C = 20
End Sub
 
Sub ShowVarB
  MsgBox C        ' Geeft de variabele C weer van module B.
End Sub

Onthoud dat ShowVarB alleen de verwachte waarde van C (20) weergeeft omdat Sub Test het in zijn bereik houdt. Als de aanroepen voor SetModuleB en ShowVarB onafhankelijk zijn, bijv. wanneer SetModuleB wordt geactiveerd door een knop op een werkbalk en ShowVarB wordt geactiveerd door een andere knop op de werkbalk, dan zal ShowVarB de waarde voor C als 0 weergeven omdat module-variabelen opnieuw worden ingesteld na elke voltooiing van de macro.


Content on this page is licensed under the Public Documentation License (PDL).
Personal tools