PELock

AutoItStartRegister and global variables

19 posts in this topic

I'm trying to use #OnAutoItStartRegister to modify the Global variable, but it seems it doesn't work, is that on purpose, that those callback functions cannot modify anything except in their own scope?

Share this post


Link to post
Share on other sites



PELock,

Which bit of "You cannot advertise payware on the forum" do you have problems understanding? I have removed the links in your sig, please do not replace them.

M23


Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind._______My UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

Share this post


Link to post
Share on other sites

Good you have removed them, but can you answer the question?

Share this post


Link to post
Share on other sites

#4 ·  Posted (edited)

PELock,

Post the code you have tried.

M23

Edit: From my tests it seems that, as with all directives, the code is run before any code is executed - so all variables within the functions are treated as Local and any Global variables of the same name are ignored as they do not yet exist.

Edited by Melba23

Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind._______My UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

Share this post


Link to post
Share on other sites

PELock,

See my edit above.

M23


Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind._______My UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

Share this post


Link to post
Share on other sites

I understand the implication of this, but if that's true - isn't it a bug? I mean we have clear language syntax defined here that tells the compiler that $a & $b are global variables so the current behaviour is against the AutoIt language own definition? Am I wrong? I can live with that, but it just seems odd.

Share this post


Link to post
Share on other sites

PELock,

I do not see it as a bug - if the functions run before any code is executed then, as I stated above, the Global variables do not yet exist so how can they be modified? I will amend the Help file text to make this clearer.

Of course, you could always make a "feature request" to suggest that the current behaviour be modified......

M23


Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind._______My UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

Share this post


Link to post
Share on other sites

Autoit does not use a compiler.

1 person likes this

Forum Rules         Procedure for posting code

Share this post


Link to post
Share on other sites

So the statements are valided only at the execution point? Howly cows, its pretty useful to me :)

Ok, thank you for explanations.

Share this post


Link to post
Share on other sites

PELock,

Declaring Global variables within a function is usually regarded as pretty poor coding practice. And why do you need to use a function to assign a value to the variables? Why not declare them within the code as normal?

;#OnAutoItStartRegister "init_a"
Global $a = 123
;#OnAutoItStartRegister "init_b"
Global $b = 345

ConsoleWrite($a & @CRLF & $b)

M23


Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind._______My UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

Share this post


Link to post
Share on other sites

#13 ·  Posted (edited)

I'm building an obfuscator. Well, already builded one, now I'm polishing it. I hope it's not another forbidden topic here.

Edited by PELock

Share this post


Link to post
Share on other sites

PELock,

Not at all. I still fail to understand why the #OnAutoItStartRegister functions are necessary, but no doubt all will become clear in due course.

M23


Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind._______My UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

Share this post


Link to post
Share on other sites

It's pretty neat feature in my opinion, I've been playing with AutoIt for like 3 weeks already and I really like the language, I have some problems with floating point numbers and their compatibility with other programming languages and ceiling/flooring functions, but I'm really surprised how well "equipped" AutoIt is (built-in functions). One thing I didn't know and didn't like are case insensitive string comparisons in If and Switch constructs. Oh and the boolean arithmetic is badly designed for someone who comes from assembler and C++ background, instead of standard operators like | & ^ I have to use functions, but I guess it's choices made back in the days. And for my purposes, the most missing feature is GOTO :P

 

Share this post


Link to post
Share on other sites

#16 ·  Posted (edited)

PELock,

Quote

the most missing feature is GOTO :P

But GOTO is evil - has no-one ever told you?

M23

Edited by Melba23

Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind._______My UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

Share this post


Link to post
Share on other sites

GOTO is just a jump and I'm used to have control over the code flow ;), even sometimes in C++ code I use goto, rarely but sometimes there's no other way and leaving flexibility in hands of the programmer is a good thing.

But no worry I already thought of other solution to this problem.

Btw is there any roadmap for new AutoIt features (like classes, language features?) or is it in frozen state?

Share this post


Link to post
Share on other sites

PELock,

Quote

is there any roadmap for new AutoIt features

M23


Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind._______My UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

Share this post


Link to post
Share on other sites

#19 ·  Posted (edited)

M23,

Interesting read, thanks.

Kylomas

Edited by kylomas

Forum Rules         Procedure for posting code

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

  • Similar Content

    • Juvigy
      IE and IE add-in
      By Juvigy
      Hi Guys,
      I have and autoit exe file that i want to be executed every time IE is opened. How can i accomplish this ?
      The exe file automates website data. I want to be sure that the exe file is executed every time IE is Opened automatcally.
    • guinness
      An example of protecting a variable(s) that should be global throughout the application
      By guinness
      An example (or one variation at least) that I created in a discussion we (devs/mods) were having about protecting global variables.
      ; An enumeration for the getters and setters, as I hate having to write zero and one Global Enum $VERSION_WRAPPER_GET, $VERSION_WRAPPER_SET ; Unused, as I have hidden behind functions, so users who might feel the need to do this $g_iVersion = 'Haha, I''m no a number', can't! ; Global $g_iVersion = 0 ; Basically this is encapsulation and is just one of many principals found in Object Oriented Programming (OOP) ; NOTE: There is no way for me to access the "global" version variable without using the _Get/Set_Version() function(s) Example() Func Example() ; Set to 10, as only integer datatypes are allowed _Set_Version(10) ; Displays 10 ConsoleWrite('1. ' & _Get_Version() & @CRLF) ; Set to a non-digit. Such a bad user/dev! _Set_Version('Not a number') ; Displays 10, as a string was passed previously that wasn't valid ConsoleWrite('2. ' & _Get_Version() & @CRLF) ; Call another function to show that it's not just visible within this function Another_Func() ; Displays 99, which was previously set in the Another_Func() ConsoleWrite('4. ' & _Get_Version() & @CRLF) ; If the variable located in __Version_Wrapper() was purely a global variable, then anything could be assigned to it ; without proper checking. As you can see below, the variable is only assigned to when certain criteria is met ; Before someone mentions performance, you have to weigh up the pros and cons of such a design choice. If you really need data to be protected ; from your users mingling with it, then this is one of many correct approaches to encapsulate data. Otherwise if you're not concerened, then ; maybe it's not for you. You're the developer when it comes down to it EndFunc ;==>Example Func Another_Func() ; Displays 10 ConsoleWrite('3. ' & _Get_Version() & @CRLF) ; Set to 99 and return back to the previous function i.e. Example() _Set_Version(99) EndFunc ;==>Another_Func ; Getter Func _Get_Version() Return __Version_Wrapper($VERSION_WRAPPER_GET) EndFunc ;==>_Get_Version ; Setter Func _Set_Version($iVersion) Return __Version_Wrapper($VERSION_WRAPPER_SET, $iVersion) EndFunc ;==>_Set_Version ; This is a wrapper for the local static variable that will be visible only in the function and for the duration of the application's ; lifecycle ; $iType: Either $VERSION_WRAPPER_GET or $VERSION_WRAPPER_SET ; $iVersion: Used when the type is $VERSION_WRAPPER_SET Func __Version_Wrapper($iType, $iVersion = Null) ; Create a local static variable and initialise to 0 Local Static $s_iVersion = 0 Switch $iType Case $VERSION_WRAPPER_GET ; Getter Return $s_iVersion Case $VERSION_WRAPPER_SET ; Setter ; Now is the chance to check if the value meets certain criteria e.g. [0-9]+ and not a string datatype If StringRegExp($iVersion, '^\d+$') And Not IsString($iVersion) Then $s_iVersion = $iVersion EndIf EndSwitch ; Return null by default, especially if the type is as a setter Return Null EndFunc ;==>__Version_Wrapper  
    • Ascend4nt
      Atom Table Functions (Local + Global Atoms)
      By Ascend4nt
      Atom Table UDF
      Local and Global Atom Table

      Since I've had this collecting dust on my computer, I figured I'd release it to see if anyone can find some use for it.
      About Atom Tables - MSDN

      Example Global Atom Table Listing
       
      Basically, a bunch of strings can be stored locally (at program level) or globally (at O/S level) with unique numerical identifiers. This UDF lets you add, find, delete, and query these atoms.
       
      Description from the top of the AtomFunctions UDF:
      ----------------------------------------------------------------
      Functions for accesing Local and Global Atom Tables, which contain strings up to 255 characters long
      The Atom tables are used for multiple types of Windows data including Window Classes (RegisterClass/Ex), Clipboard formats (RegisterClipboardFormat), Hotkeys (RegisterHotKey), and Dynamic Data Exchange (DDE) which is a form of interprocess communication. (Some of the above may use a Local rather than the Global Atom table)
      Other uses can include storing program strings to lookup by a 16-bit value and interprocess communication

       "RegisterHotKey function" @ MSDN states this:
       "An application must specify an id value in the range 0x0000 through 0xBFFF.
        A shared DLL must specify a value in the range 0xC000 through 0xFFFF
        (the range returned by the GlobalAddAtom function).
        To avoid conflicts with hot-key identifiers defined by other shared DLLs,
        a DLL should use the GlobalAddAtom function to obtain the hot-key identifier."

       Kernel Note: The Atom Table is a separate entity from Kernel Objects like Events, Mutexes, Files, etc.  However, the Atom Table is (separately) accessible from within the Kernel, so its like a Kernish object?

      Notes on Atom Tables:
      Stringlimit is 255 characters NOT including a null-terminator. This is unfortunately not   enough for a MAX_PATH string, which is 259+null-term. However, stripping off root-drive prefix get you within 1 character of the length (259 - 3 ["C:"] = 256] which may be enough - but using IPC, one can store 4 - 6 (8-12 in x64) extra chars in wParam/lParam..   See <AtomExample_IPC.au3> for an implementation of this  
      There is both a Local and Global Atom Table. The Local one is local to this Process,   and the Global one is available/accessible to/from all Processes.  
      Atoms numbered 0 - 49151 (0xBFFF) are not actually part of the Atom Table.   Querying these values will return a string representation of the number as an unsigned integer    Example: 1234 is translated to "#1234"
       
      Adding atom strings that start with a "#" will return an unsigned integer if the numbers   following "#" are an integer less than 49152 (1 - 49151 [0xBFFF]).     Examples: "#1" => 1, "#49151" => 49151
       
      Atoms numbered from 49152 - 65535 (from 0xC000 - 0xFFFF) DO reference the Atom Table strings  
      Maximum Atom string length is 255 characters (not including a null-terminator)  
      Functions:
      ;  Local: ;    _AtomTableInit()        ; Initializes Local Atom Table. Optional [37 hash buckets allocated by default] ;    _AtomAddLocal()            ; Adds a string to the Local Atom table, returns # identifier [increments reference if already exists] ;    _AtomGetNameLocal()        ; Gets the Local Atom string associated with a numerical identifier ;    _AtomDeleteLocal()        ; Decrements the reference count of Local Atom, deletes when reaches 0 ;    _AtomFindLocal()        ; Finds # identifier for a string in the Local Atom table ;    _AtomGetAllLocal()        ; Returns all found Local atoms in an array ; Global: ;    _AtomAddGlobal()        ; Adds a string to the Global Atom table, returns # identifier [increments reference if already exists] ;    _AtomGetNameGlobal()    ; Gets the Global Atom string associated with a numerical identifier ;    _AtomDeleteGlobal()        ; Decrements the reference count of Global Atom, deletes when reaches 0 ;    _AtomFindGlobal()        ; Finds # identifier for a string in the Global Atom table ;    _AtomGetAllGlobal()        ; Returns all found Global atoms in an array ; 'Undocumented': ;    _AtomGetGlobalTableUD() ; Using 'undocumented' function calls, gets info on all Global Atoms ;    _AtomGetInfoUD()        ; Returns reference count, pinned status, as well as Atom Name ----------------------------------------------------------------
      There are a few 'undocumented' functions used for getting information on the Atom Table included (I can't help myself).
      In addition to the core UDF, there's 2 example files:
      AtomTableExample.au3 - This demonstrates various use - adding, deleting, and querying information in the Local and Global atom tables. (Extended info comes from 'undocumented' functions)  
      AtomExample_IPC.au3 - This demonstrates how the Atom Table could be used in InterProcess Communication. A rather rough sketch, but shows how you could squeeze MAX_PATH pathnames into IPC messages combined with Atom tables. It's all a bit light on the documentation, but I just wanted to prevent this thing from collecting more dust   Might prove useful to someone!
      History::



      AtomTablesUDF.zip ~prev Downloads: 29
       
    • butterfly
      About Global Local and For next $z help me tutorial
      By butterfly
      Hello FellowForumers
      I have some questions about this subject and Although I have researched about i have some problems let it sink in proper
      Although i have basic understanding of Global and Local I Still have questions to be absolute sure:
      #include <Array.au3> Global $TSAB[20] While 1 trading() If $TSAB[19] = True Then MsgBox(0,"","Thank you AutoIT Forum ^^ ") ;~ If $TSAB[19] = True then Exit WEnd func trading() $TSAB[19] = "" $TSAB[7] = "" while 1 _ArrayDisplay($TSAB) $TSAB[7] = "done" _ArrayDisplay($TSAB) If $TSAB[7] = "Done" Then $TSAB = ClientDoneCommand() _ArrayDisplay($TSAB) If $TSAB[19] = True then Return $TSAB WEnd EndFunc func ClientDoneCommand() $TSAB[19] = True Return $TSAB EndFunc My own example Above gives to me Decent understanding that Global can be called anywhere in the program and that the global variable is sent and called towards other functions and loops as it was just before it got sent or returned
      is there anything I have to keep in mind to Prevent any big mess? Am I something missing about this or has anyone some advice?
      I will use this global as the soul of my program and store information on where it has been and been and what functions it has visit and what it has been doing etc
      Here I move to Local $var
      So I got the same script and added some Local var:
      #include <Array.au3> Global $TSAB[20] local $hugs = "" While 1     ConsoleWrite($hugs & "0" & @LF) ;Added line    $hugs = trading()     If $TSAB[19] = True Then MsgBox(0,"","Thank you AutoIT Forum ^^ ") ;~     If $TSAB[19] = True then Exit ConsoleWrite($hugs & "1" & @LF) ;Added line WEnd func trading()     $TSAB[19] = ""     $TSAB[7] = ""     local $hugs = "yes"     while 1         ConsoleWrite($hugs & "2" & @LF) ;Added line         _ArrayDisplay($TSAB)         $TSAB[7] = "done"         _ArrayDisplay($TSAB)         If $TSAB[7] = "Done" Then $TSAB = ClientDoneCommand($hugs)         _ArrayDisplay($TSAB)         ConsoleWrite($hugs & "4" & @LF) ;Added line         If $TSAB[19] = True then Return $TSAB     WEnd EndFunc func ClientDoneCommand($hugs)     $TSAB[19] = True     ConsoleWrite($hugs & "3" & @LF) ;Added line     $hugs = "Maybe"     Return $TSAB EndFunc Here I added a few console writes and numbered them the consolewrite output is
      0
      yes2
      yes3
      yes4
      1
      repeat
      So the following things I see in my blurry mind as are as follow
      at the very start I need to declare Local $hugs = ""  else ; ConsoleWrite($hugs & "0" & @LF)   ;Added line will have variable used before declaration (meaning nothing has been stored ever which I understand)
      Now here comes an interesting part to me, about:
          $hugs = trading()     If $TSAB[19] = True Then MsgBox(0,"","Thank you AutoIT Forum ^^ ") ;~     If $TSAB[19] = True then Exit ConsoleWrite($hugs & "1" & @LF) ;Added line here Happens nothing , not even a error (which I expected)
      I do not get a consolewrite: 0
      it does not output anything
      I understand that the functions has not returned the variable of
      local $hugs = "yes" or     $hugs = "Maybe" But I expected an error, why no error?
      What Happens with the at line 33
      $hugs = "Maybe" does it get lost? deleted (from the memory ) at the end of the function?
      @ line 17?
      local $hugs = "yes" Would it be wise to write there local $hugs = "yes" or is $hugs = "yes" Good enough , does it really matter with managing anything?
      and as last I also understand if I would change
      that at line 26 that it is not needed the write return $TSAB but just return would be good enough?
      because $TSAB is in every function / If / while for next loop avaiable and it will carry over the information stored inside of it?
      if i would change it into
      Return $hugs
      then
      ConsoleWrite($hugs & "1" & @LF)  will give me yes1
      and even at the very start of the while loop
      ConsoleWrite($hugs & "0" & @LF)   will give me yes0 and it was previous just 0
      so it seems
      anything wrong here? so it seems the local does not get lost at the end of the while loop
      then my final questions about for / next
      For $z = 0 to 9     For $x = 0 to 9         For $y = 0 to 9         ConsoleWrite($z & $x & $y & @LF)         next     next next if $z = 9 Then  MsgBox(0,"","1000 ^^ ") if $x = 9 Then  MsgBox(0,"","x = 9 ^^ ") if $y = 9 Then  MsgBox(0,"","y = 9 ^^ ") the Variable $z , $x and $y
      are they only used in the for next loop or can they be used outside of it?
      my msgboxs do not work here after the next so i guess they end right away in the for next loop
      any tips or suggestions are welcome if i am saying anything wrong or retarded here
      Cheers Butterfly
    • onlineth
      What are Dim, Global, Local, and Scopes?
      By onlineth
      Hi, I am having issues understanding something in the tutorial Melba23 gave me. At the bottom of page 22-
       
      What are Dim, Global. Local, and Scope? What do they do?