what are some ahk programming mistakes that tend to 'fail silently' with no warning and took you a long time to catch?

Helpful script writing tricks and HowTo's
20170201225639
Posts: 5
Joined: 01 Feb 2017, 22:57

what are some ahk programming mistakes that tend to 'fail silently' with no warning and took you a long time to catch?

24 Feb 2017, 13:07

a couple of my own ...


#1: putthing a whitespace between function name and left parenthesis

example:

incorrect (function will NOT be called)

Code: [Select all] [Download] GeSHi © Codebox Plus

___a_toggle_window1_Xpos_between_2_and_3 ( _title, 0, -100 )

correct:

Code: [Select all] [Download] GeSHi © Codebox Plus

___a_toggle_window1_Xpos_between_2_and_3( _title, 0, -100 )



i've made this mistake probably 4-5 times in the past month, and each time it took me some time to realize this is the root of the problem. i'm thinking i should write an ahk script to scan my scripts of " (" before i run them ...




#2: assuming pixelgetcolor outputs RGB (as opposed to BGR) color

example:


incorrect (you'll get a different color)

Code: [Select all] [Download] GeSHi © Codebox Plus

PixelGetColor, _color, %MouseX%, %MouseY%
...
Gui, Color, %_color%



correct

Code: [Select all] [Download] GeSHi © Codebox Plus

PixelGetColor, _color, %MouseX%, %MouseY%, RGB
...
Gui, Color, %_color%






#3 single line block comment

incorrect (hotkey will simply not take effect (i wonder what really happens in this case?))



correct
iseahound
Posts: 38
Joined: 13 Aug 2016, 21:04
GitHub: iseahound

Re: what are some ahk programming mistakes that tend to 'fail silently' with no warning and took you a long time to catc

26 Feb 2017, 16:56

Declaring variables mostly.


1a) Correct

Code: [Select all] [Download] GeSHi © Codebox Plus

x1 := y1 := x2 := y2 := 0


1b) incorrect - only x1 is static, rest are instance variables.

Code: [Select all] [Download] GeSHi © Codebox Plus

static x1 := y1 := x2 := y2 := 0


I was mistaken about this one.


3a) incorrect - the variable angelic must be global in AHK

Code: [Select all] [Download] GeSHi © Codebox Plus

static angelic := "Graphics_Subtitle_simTextSize"         
Gui, TextSizeWindow:Add, Text, % "v" angelic, % str


3b) Correct Workaround - turn a static variable into a global one on the fly.

Code: [Select all] [Download] GeSHi © Codebox Plus

static angelic := "Graphics_Subtitle_simTextSize"         
DeclareGlobal(angelic)
Gui, TextSizeWindow:Add, Text, % "v" angelic, % str


DeclareGlobal(angelic) {
global
(%angelic%)
return ; angelic is omnipresent. Deref angelic and make her a global var.
}
Last edited by iseahound on 26 Feb 2017, 17:11, edited 2 times in total.
User avatar
nnnik
Posts: 1690
Joined: 30 Sep 2013, 01:01
Location: Germany

Re: what are some ahk programming mistakes that tend to 'fail silently' with no warning and took you a long time to catc

26 Feb 2017, 17:00

iseahound wrote:2a) Incorrect - only r is static

Code: [Select all] [Download] GeSHi © Codebox Plus

static r, g, b

Code: [Select all] [Download] GeSHi © Codebox Plus

fn()
{
static x := 1, y := x++
return y
}
Msgbox % fn()
Msgbox % fn()
Msgbox % fn()
Try to explain this code please
I am not afraid of many things. But I do fear fear.
iseahound
Posts: 38
Joined: 13 Aug 2016, 21:04
GitHub: iseahound

Re: what are some ahk programming mistakes that tend to 'fail silently' with no warning and took you a long time to catc

26 Feb 2017, 17:09

nnnik wrote:Try to explain this code please


I was mistaken. Seems like it gave me trouble in the past and I just avoided that afterwards. Post will be edited.
TAC109
Posts: 150
Joined: 02 Oct 2013, 19:41

Re: what are some ahk programming mistakes that tend to 'fail silently' with no warning and took you a long time to catc

26 Feb 2017, 19:17

boiler wrote:Typos in variable names.
#warn can help find these.

Return to “Tutorials”

Who is online

Users browsing this forum: vnmiller and 3 guests