Jump to content
TheDcoder

Au3Check incorrectly identifying a GUICtrlSetOnEvent function

Recommended Posts

TheDcoder

Hello, just stumbled across this behaviour while I was working on my project.

I am getting a "<function> called with wrong number of args" on a GUICtrlSetOnEvent line, the <function> as far as I can see accepts only 1 optional argument so it would just work fine with a GUICtrlSetOnEvent callback. The error surfaced when I add code which called the <function> with a single argument... it was working without any errors before that.

Here is the actual code (you can download the repository as zip and run it out of the box to get the error), the <function> is GUI_BridgeHandler and this is my SciTE Output:

>"C:\Program Files (x86)\AutoIt3\SciTE\..\AutoIt3.exe" "C:\Program Files (x86)\AutoIt3\SciTE\AutoIt3Wrapper\AutoIt3Wrapper.au3" /run /prod /ErrorStdOut /in "E:\Projects\AutoIt\ProxAllium\ProxAllium.au3" /UserParams    
+>18:53:37 Starting AutoIt3Wrapper v.17.224.935.0 SciTE v.3.7.3.0   Keyboard:00000409  OS:WIN_81/  CPU:X64 OS:X64  Environment(Language:0809)  CodePage:0  utf8.auto.check:4
+>         SciTEDir => C:\Program Files (x86)\AutoIt3\SciTE   UserDir => C:\Users\TheDcoder\AppData\Local\AutoIt v3\SciTE\AutoIt3Wrapper   SCITE_USERHOME => C:\Users\TheDcoder\AppData\Local\AutoIt v3\SciTE 
>Running AU3Check (3.3.14.3)  from:C:\Program Files (x86)\AutoIt3  input:E:\Projects\AutoIt\ProxAllium\ProxAllium.au3
"E:\Projects\AutoIt\ProxAllium\ProxAllium.au3"(127,43) : error: GUI_BridgeHandler() called with wrong number of args.
    GUICtrlSetOnEvent(-1, "GUI_BridgeHandler")
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
"E:\Projects\AutoIt\ProxAllium\ProxAllium.au3"(103,42) : REF: definition of GUI_BridgeHandler().
    GUI_BridgeHandler($g_idTrayOptionBridges)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
E:\Projects\AutoIt\ProxAllium\ProxAllium.au3 - 1 error(s), 0 warning(s)
!>18:53:37 AU3Check ended. Press F4 to jump to next error.rc:2
+>18:53:38 AutoIt3Wrapper Finished.
>Exit code: 2    Time: 1.273

Needless to say it works fine when I run it directly without Au3Check :)

Thanks for the responses in advance!

P.S Sorry for the thread's title, couldn't think of anything else.


AutoIt.4.Life Clubrooms - Life is like a Donut (secret key)

Spoiler

My contributions to the AutoIt Community

If I have hurt or offended you in anyway, Please accept my apologies, I never (regardless of the situation) mean to do that to anybody!!!

3fHNZJ.gif

PLEASE JOIN ##AutoIt AND HELP THE IRC AUTOIT COMMUNITY!

Share this post


Link to post
Share on other sites
TheDcoder

I think I have figured it out, Au3Check was using the new call to GUI_BridgeHandler as a reference to the syntax instead of the Func declaration so it might have thought the 1 argument may have been required. I managed to fix the error by using Call to call the function :).

Is this some kind of bug? Can anything be done to improve the situation? I would like to know @Jos's opinion on this :D


AutoIt.4.Life Clubrooms - Life is like a Donut (secret key)

Spoiler

My contributions to the AutoIt Community

If I have hurt or offended you in anyway, Please accept my apologies, I never (regardless of the situation) mean to do that to anybody!!!

3fHNZJ.gif

PLEASE JOIN ##AutoIt AND HELP THE IRC AUTOIT COMMUNITY!

Share this post


Link to post
Share on other sites
Jos

yea probably, It is also fixed by moving the Func Tray_HandleBridgeOption()  after the Func GUI_BridgeHandler($iCtrlID = Default).

With the changes made in AutoIt3 around the special function definitions we really opened a can of worms for au3check. 
I wish we had somebody around that really understands how it all works which is certainly not me. :)

Jos

 

  • Like 1

SciTE4AutoIt3 Full installer Download page   - Beta files       Read before posting     How to post scriptsource        Forum Rules
 
Live for the present,
Dream of the future,
Learn from the past.
  :)

Share this post


Link to post
Share on other sites
TheDcoder

I don't really understand what you mean by special functions but the Call function is certainly a though nut to crack :D

Can't really complain, Au3Check is a wonderful program and a complex beast, one can expect it to have some quirks here and there.


AutoIt.4.Life Clubrooms - Life is like a Donut (secret key)

Spoiler

My contributions to the AutoIt Community

If I have hurt or offended you in anyway, Please accept my apologies, I never (regardless of the situation) mean to do that to anybody!!!

3fHNZJ.gif

PLEASE JOIN ##AutoIt AND HELP THE IRC AUTOIT COMMUNITY!

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

    • Altor
      By Altor
      Hi all:
      Sorry for such an innocent question .....
      It is possible to delete all Au3Check error messages with a hot key when they appear with F5 and you can continue editing the code without seeing the red lines. For now my only solution is to reload the script but it is a bit annoying.
      Thank's to all
      Altor
       
    • TheDcoder
      By TheDcoder
      Hello everyone, I discovered a bug yesterday and I posted it at the bug tracker:
      I also made a simple script which can be used to reproduce the bug:
      CreateVariable() ConsoleWrite($sGlobalVariable & @CRLF) Func CreateVariable() Global $sGlobalVariable = "Foobar" EndFunc The bug was closed by @BrewManNH:
      While I partially agree with the above statement, My code was not practical enough... so @mLipok advised me to create a thread on the forums with practical code (Thanks!). That is the point of this thread, I am going to provide the code where I experience this bug/problem .
      I discovered this bug when I was working on one of my projects called "ProxAllium". When the main script finishes execution, Au3Check throws a nasty warning about "variable possibly used before declaration":

      As you can see, the variable is indeed being used after calling the function in which the variable is declared... The warning won't appear if I declare the function ABOVE the variable. As @BrewManNH said, Au3Check reads line by line... I think this should be changed, Au3Check should not throw warnings if the interpreter is able to run the code, at least most of the time anyway!
      So what do you guys think? Is this a valid bug?... and I request those who participate in the discussion not to discuss the code being "poor", that is another thing/thread in itself
      P.S I had already written this once but the forum editor decided to mess up and when I undid (Ctrl + Z) something... This is a poorly written version of that article, I was very frustrated while writing this!
    • Trolleule
      By Trolleule
      Hi,
      i was playing around au3check and was asking myself if its posible to ignore these lots of "$i already declared" warinings, but still checking if global variables are declared twice.
      Its normal to have a few functions with Local $i declarations, so its not useful to show these warnings
      Btw: -w3 is a parameter
      Iam using
      #AutoIt3Wrapper_Au3Check_Parameters=-q -w 1 -w 2 -w 3 -w 4 -w 6 -w 7
    • taylansan
      By taylansan
      Hello dears,
      How can I hide the wrapper or check on the debug window?
      >"C:\Program Files\AutoIt3\SciTE\..\AutoIt3.exe" "C:\Program Files\AutoIt3\SciTE\AutoIt3Wrapper\AutoIt3Wrapper.au3" /run /prod /ErrorStdOut /in "D:\Taylan\Projects\AU3\Browser\TimesMe\TimesMe.au3" /UserParams +>11:39:12 Starting AutoIt3Wrapper v.16.306.1237.0 SciTE v.3.6.2.0 Keyboard:00000409 OS:WIN_7/Service Pack 1 CPU:X64 OS:X86 Environment(Language:0409) CodePage:0 utf8.auto.check:4 # detect ascii high characters and if none found set default encoding to UTF8 and do not add BOM +> SciTEDir => C:\Program Files\AutoIt3\SciTE UserDir => C:\Users\t00722811\AppData\Local\AutoIt v3\SciTE\AutoIt3Wrapper SCITE_USERHOME => C:\Users\t00722811\AppData\Local\AutoIt v3\SciTE >Running AU3Check (3.3.14.2) from:C:\Program Files\AutoIt3 input:D:\Taylan\Projects\AU3\Browser\TimesMe\TimesMe.au3 +>11:39:12 AU3Check ended.rc:0 >Running:(3.3.14.2):C:\Program Files\AutoIt3\autoit3.exe "D:\Taylan\Projects\AU3\Browser\TimesMe\TimesMe.au3" --> Press Ctrl+Alt+Break to Restart or Ctrl+Break to Stop ... blablabla +>11:39:13 AutoIt3.exe ended.rc:0 +>11:39:13 AutoIt3Wrapper Finished. >Exit code: 0 Time: 1.822 I have checked the view or options menu, but couldn't find much about this.
      Is there any way to hide these outputs?

    • AndyS01
      By AndyS01
      I have a very large script and I found one of my global variables was declared twice but I didn't get any errors when compiling the script.  I have a test script here:
      #AutoIt3Wrapper_Au3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6 -w 7 Global $aArray1[7] Global $aArray1[7] ; I don't get an error on this line!! Global $aArray1[2] ; I don't get an error on this line!! global $VAR1 global $VAR2 global $VAR1 ; I get an error on this line global $VAR2 ; I get an error on this line I get "already declared/assigned" errors on the duplicate $VAR1 and $VAR2 lines but not on the duplicate $aArray1 lines. 
      Is there a way to have the duplicate $aArray1 lines flagged with an error?
       
×