Difference between revisions of "NL/Documentation/BASIC Guide/Scope of Variables"
(Created page with "{{NL/Documentation/BASICGuideTOC/v2 |ShowPrevNext=block |ShowPrevPage=block |PrevPage=NL/Documentation/BASIC Guide/Arrays |NextPage=NL/Documentation/BASIC Guide/Constants |lan...") |
(→Public Domain Variables) |
||
Line 34: | Line 34: | ||
{{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 {{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.}} | ||
− | == Public | + | == Variabelen in domein Public == |
− | + | 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: | ||
Line 60: | Line 60: | ||
</source> | </source> | ||
− | + | 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. | |
− | + | 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"> | <source lang="oobas"> | ||
Line 68: | Line 68: | ||
</source> | </source> | ||
− | + | 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 == | == Global Variables == |
Revision as of 14:46, 21 January 2013
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 lokatie 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.
Global Variables
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 Global:
Global A As Integer
Private Variables
Private variables are only available in the module in which they are defined. Use the keyword Private to define the variable:
Private MyInteger As Integer
If several modules contain a Private variable with the same name, Apache OpenOffice Basic creates a different variable for each occurrence of the name. In the following example, both module A and B have a Private variable called C. The Test function first sets the Private variable in module A and then the Private variable in 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 SetModuleA 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
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.
Content on this page is licensed under the Public Documentation License (PDL). |