realtebo

The global vars must be redeclared to be used in function?

4 posts in this topic

If i declare a variable as global at start of the script and then I use it into one function, when the function end, the global var has been modified or not?

Share this post


Link to post
Share on other sites



#2 ·  Posted (edited)

If you change the value in a function, yes, it will modify the global by default.

You can re-declare it as local, inside a function, then it won't update the global.

example:

Global $something = 1

Test()
ConsoleWrite("outside: $somthing=" & $something & @CRLF)
Test(False)
ConsoleWrite("outside: $somthing=" & $something & @CRLF)

Func Test($bReuseGlobal = True)
    If Not $bReuseGlobal Then
        Local $something = 2
    Else
        $something = 3
    EndIf
    ConsoleWrite(@TAB & "inside: $somthing=" & $something & @CRLF)
EndFunc
Edited by jdelaney

IEbyXPATH-Grab IE DOM objects by XPATH IEscriptRecord-Makings of an IE script recorder ExcelFromXML-Create Excel docs without excel installed GetAllWindowControls-Output all control data on a given window.

Share this post


Link to post
Share on other sites

The Global var has been modified.

Please see the help file for variables and scope.


My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2017-04-18 - Version 1.4.8.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2017-02-27 - Version 1.3.1.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2015-04-01 - Version 0.4.0.0) - Download - General Help & Support - Example Scripts
Excel - Example Scripts - Wiki
Word - Wiki
PowerPoint (2015-06-06 - Version 0.0.5.0) - Download - General Help & Support

Tutorials:
ADO - Wiki

 

Share this post


Link to post
Share on other sites

#4 ·  Posted (edited)

Specifically:

By default when variables are declared using Dim or assigned in a function they have local scope unless there is a global variable of the same name (in which case the global variable is reused). This can be altered by using the Local and Global keywords to declare variables and force the scope you want.

Which I have demonstrated in my snippet.

Edited by jdelaney

IEbyXPATH-Grab IE DOM objects by XPATH IEscriptRecord-Makings of an IE script recorder ExcelFromXML-Create Excel docs without excel installed GetAllWindowControls-Output all control data on a given window.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now