bouncingmolar Posted November 3, 2008 Share Posted November 3, 2008 Dim / Global / Local / Const I've read the help menu but I just want to clarify. I don't quite understand what its for. Does setting a variable as global mean that other autoit scripts that use the same variable name can access that variable? Thanks. Link to comment Share on other sites More sharing options...
trancexx Posted November 3, 2008 Share Posted November 3, 2008 (edited) Global doesn't mean Universally Global, only locally global. What? Edited November 3, 2008 by trancexx ♡♡♡ . eMyvnE Link to comment Share on other sites More sharing options...
Marlo Posted November 3, 2008 Share Posted November 3, 2008 Dim is just the same as just typing out the variable dim $var ;Same as just typing $varoÝ÷ غjU¢W^rV«y«Ú®&ëaj×åÉ·®±çb©hq©lr^iû§rبú+{¦¦WºÚ"µÍ[ÈÙ[Ý[Û BØØ[ ÌÍÝHHØØ[ÙHÈXXH[]ÚHÝ]ÚYHÈ[Ý[Û[[oÝ÷ Ø Ý ì·¥×ªÞjö«¦åzØZµÆ§[yÈZ¶èºhºÛazÇ+AÆ®±èÀ5$À56®¶sdvÆö&Â6öç7Bb33c·f"ÒµvÆÂFV6Æ&RvÆö&Âf&&ÆRFB6ææ÷B&R6ævVBçvW&R'WB6â&RW6VBWfW'vW& hope you understand Click here for the best AutoIt help possible.Currently Working on: Autoit RAT Link to comment Share on other sites More sharing options...
bouncingmolar Posted November 3, 2008 Author Share Posted November 3, 2008 Dim is just the same as just typing out the variable dim $var ;Same as just typing $varoÝ÷ غjU¢W^rV«y«Ú®&ëaj×åÉ·®±çb©hq©lr^iû§rبú+{¦¦WºÚ"µÍ[ÈÙ[Ý[Û BØØ[ ÌÍÝHHØØ[ÙHÈXXH[]ÚHÝ]ÚYHÈ[Ý[Û[[oÝ÷ Ø Ý ì·¥×ªÞjö«¦åzØZµÆ§[yÈZ¶èºhºÛazÇ+AÆ®±èÀ5$À56®¶sdvÆö&Â6öç7Bb33c·f"ÒµvÆÂFV6Æ&RvÆö&Âf&&ÆRFB6ææ÷B&R6ævVBçvW&R'WB6â&RW6VBWfW'vW& hope you understand ..... i'm not sure why when I quoted your post it turned to garbage Cool Thanks Marlo! I now have a couple of further questions: 1. If these are the same: dim $var $var Why do people use dim and not just type $var 2. When I don't use global $var below, i can still use the fuction to change $var is my code too simple? $var = 1 _function() func _function() $var = 2 EndFunc msgbox(0,"blah", $var) Link to comment Share on other sites More sharing options...
Demonic Posted November 3, 2008 Share Posted November 3, 2008 I'm not positive but I believe if you Dim a variable inside a function, it does not change the dim'd variable outside a function.. I'm not sure though, so don't take my exact word for it. No clue with global. Sorry. Link to comment Share on other sites More sharing options...
AlmarM Posted November 3, 2008 Share Posted November 3, 2008 I think you use Dim $var if you have the $var but the script cant find it. I had it once. AlmarM Minesweeper A minesweeper game created in autoit, source available. _Mouse_UDF An UDF for registering functions to mouse events, made in pure autoit. 2D Hitbox Editor A 2D hitbox editor for quick creation of 2D sphere and rectangle hitboxes. Link to comment Share on other sites More sharing options...
AlmarM Posted November 3, 2008 Share Posted November 3, 2008 (edited) What about this exmaple for Local.Dont know if its right.$var = 50 MsgBox(0, "", "$var = " & $var) Func MyFunc() Local $var = 100 MsgBox(0, "", "$var in MyFunc = " & $var) EndFunc MsgBox(0, "", "$var = " & $var)AlmarM Edited November 3, 2008 by AlmarM Minesweeper A minesweeper game created in autoit, source available. _Mouse_UDF An UDF for registering functions to mouse events, made in pure autoit. 2D Hitbox Editor A 2D hitbox editor for quick creation of 2D sphere and rectangle hitboxes. Link to comment Share on other sites More sharing options...
PsaltyDS Posted November 3, 2008 Share Posted November 3, 2008 ..... i'm not sure why when I quoted your post it turned to garbage The autoit tags cause problems, change them to code tags to avoid the issue. 1. If these are the same: dim $var $var Why do people use dim and not just type $varThey are not the same. You can't declare a variable by just "$var", but the declaration will be made for you if you assign a value to it, like: "$var = 0" The "= 0" part that assigns a value is required if you don't want Dim/Local/Global. 2. When I don't use global $var below, i can still use the fuction to change $var is my code too simple? $var = 1 _function() func _function() $var = 2 EndFunc msgbox(0,"blah", $var) This works because you provided an assignment value, so $var was declared by default. Since that line is outside a function, it was declared Global by default. Dim and declaration by assignment will do the same thing, declare Global by default outside a function, or Local by default if inside a function. If the variable already exists in the Global scope however, then that is the variable used inside a function by "$var = 2", a new Local is not created by assignment because it already exists globally. To create a separate variable with the same name in the local scope, you would have to explicitly use Local inside the function: $var = 1; Global by default assignment _function() msgbox(0,"Global $var outside function", $var) func _function() msgbox(0,"Global $var inside function", $var) Local $var = 2; This is not the same $var, it is local to this function MsgBox(0,"Local $var inside function", $var) EndFunc This get confusing and leads to problems, as you can see. To avoid those problems, never use default assignment or Dim, always explicitly declare variables outside functions with Global and all variables used inside functions with Local (unless the function really wants to use the Global). Even though there are default actions that _might_ take care of it for you, explicit declaration will save you many headaches. Valuater's AutoIt 1-2-3, Class... Is now in Session!For those who want somebody to write the script for them: RentACoder"Any technology distinguishable from magic is insufficiently advanced." -- Geek's corollary to Clarke's law Link to comment Share on other sites More sharing options...
bouncingmolar Posted November 3, 2008 Author Share Posted November 3, 2008 explicit declaration will save you many headaches. Sorry to keep this alive, but just to clarify.1. declaring: $var =0 or dim $var is the same. 2.$var=0 or dim $var will normally automatically assign itself to global $var3. if no global $var exists, then using dim $var/$var=0 inside a function will automatically be the same as local $varI've seen a few example scripts where the varibles are declared using dim at the top of the script. I assume that using global at the beginning of the script then has the same effect. this seems like a difficult concept, I think I'm getting it though. Thanks for the pointers and great examples. Ndrom 1 Link to comment Share on other sites More sharing options...
Marlo Posted November 3, 2008 Share Posted November 3, 2008 Yes you got 1 and 2 right For 3 you should never really declare a global from inside a function. Declare it outside first. And its just good coding practice to declare all your variables in your scripts header Click here for the best AutoIt help possible.Currently Working on: Autoit RAT Link to comment Share on other sites More sharing options...
PsaltyDS Posted November 3, 2008 Share Posted November 3, 2008 Sorry to keep this alive, but just to clarify.1. declaring: $var =0 or dim $var is the same. 2.$var=0 or dim $var will normally automatically assign itself to global $var3. if no global $var exists, then using dim $var/$var=0 inside a function will automatically be the same as local $varRight on all three counts. I've seen a few example scripts where the varibles are declared using dim at the top of the script. I assume that using global at the beginning of the script then has the same effect. this seems like a difficult concept, I think I'm getting it though. Thanks for the pointers and great examples.Using Global, Dim, and simply declaring by assignment will all produce a Global variable if done outside of a function. The only difference is good style and therefore the confusion you can generate by not being explicit. The longer and more complicated your scripts get, the more you will appreciate doing it right and being able to understand it when you go back to make a change after not looking at this code for a year. The "What was I thinking?" moment... Valuater's AutoIt 1-2-3, Class... Is now in Session!For those who want somebody to write the script for them: RentACoder"Any technology distinguishable from magic is insufficiently advanced." -- Geek's corollary to Clarke's law Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now