Difference between revisions of "NL/Documentation/BASIC Guide/Scope of Variables"
(→Private variabelen) |
|||
Line 8: | Line 8: | ||
{{DISPLAYTITLE:Bereik en levensduur van variabelen}} | {{DISPLAYTITLE:Bereik en levensduur van variabelen}} | ||
__NOTOC__ | __NOTOC__ | ||
− | Een variabele in {{ | + | 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: | ||
− | < | + | <syntaxhighlight lang="oobas"> |
Sub Test | Sub Test | ||
Dim MyInteger As Integer | Dim MyInteger As Integer | ||
' ... | ' ... | ||
End Sub | End Sub | ||
− | </ | + | </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>: | ||
− | < | + | <syntaxhighlight lang="oobas"> |
Sub Test | Sub Test | ||
Static MyInteger As Integer | Static MyInteger As Integer | ||
' ... | ' ... | ||
End Sub | End Sub | ||
− | </ | + | </syntaxhighlight> |
− | {{Documentation/VBAnote|Anders dan in VBA, zorgt {{ | + | {{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.}} |
== Variabelen in domein Public == | == Variabelen in domein Public == | ||
Line 40: | Line 40: | ||
Module A: | Module A: | ||
− | < | + | <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 | ||
− | </ | + | </syntaxhighlight> |
Module B: | Module B: | ||
− | < | + | <syntaxhighlight lang="oobas"> |
Sub Flop | Sub Flop | ||
A = A - 1 | A = A - 1 | ||
End Sub | End Sub | ||
− | </ | + | </syntaxhighlight> |
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. | 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. | ||
Line 64: | Line 64: | ||
U kunt ook het sleutelwoord <tt>Public</tt> gebruiken in plaats van <tt>Dim</tt> om een variabele in het domein Public te declareren: | U kunt ook het sleutelwoord <tt>Public</tt> gebruiken in plaats van <tt>Dim</tt> om een variabele in het domein Public te declareren: | ||
− | < | + | <syntaxhighlight lang="oobas"> |
Public A As Integer | Public A As Integer | ||
− | </ | + | </syntaxhighlight> |
Een variabele in het domein Public is alleen beschikbaar zo lang als de geassocieerde macro wordt uitgevoerd en daarna wordt de variabele opnieuw ingesteld. | Een variabele in het domein Public is alleen beschikbaar zo lang als de geassocieerde macro wordt uitgevoerd en daarna wordt de variabele opnieuw ingesteld. | ||
Line 74: | Line 74: | ||
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>: | 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>: | ||
− | < | + | <syntaxhighlight lang="oobas"> |
Global A As Integer | Global A As Integer | ||
− | </ | + | </syntaxhighlight> |
== Private variabelen == | == Private variabelen == | ||
Line 82: | Line 82: | ||
<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: | <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: | ||
− | < | + | <syntaxhighlight lang="oobas"> |
Private MyInteger As Integer | Private MyInteger As Integer | ||
− | </ | + | </syntaxhighlight> |
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>. | 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>. | ||
Line 90: | Line 90: | ||
Module A: | Module A: | ||
− | < | + | <syntaxhighlight lang="oobas"> |
Private C As Integer | Private C As Integer | ||
Line 107: | Line 107: | ||
MsgBox C ' Geeft de variabele C weer van module A. | MsgBox C ' Geeft de variabele C weer van module A. | ||
End Sub | End Sub | ||
− | </ | + | </syntaxhighlight> |
Module B: | Module B: | ||
− | < | + | <syntaxhighlight lang="oobas"> |
Private C As Integer | Private C As Integer | ||
Line 121: | Line 121: | ||
MsgBox C ' Geeft de variabele C weer van module B. | MsgBox C ' Geeft de variabele C weer van module B. | ||
End Sub | End Sub | ||
− | </ | + | </syntaxhighlight> |
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. | 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. |
Latest revision as of 14:39, 9 February 2021
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
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). |