ur

Method overloading does it exist in AutoIT?

3 posts in this topic

I have function which needs 3 parameters and the last one is passed ByReference.

 

ReadFunction($strFunctionName,ByRef $countArgts)

 

But can I make the reference parameter as optional.i.e., $countArgts as optional or to keep a default value as below.

 

ReadFunction($strFunctionName,ByRef $countArgts=1560)

This is giving a compilation error, or any method overloading approach like in Programming languages Java,etc.

 

Share this post


Link to post
Share on other sites



Did you read the ByRef helpfile documentation? I guess, that clearifies a lot.


Scripts & functions Organize Includes Let Scite organize the include files

Yahtzee The game "Yahtzee" (Kniffel, DiceLion)

LoginWrapper Secure scripts by adding a query (authentication)

_RunOnlyOnThis UDF Make sure that a script can only be executed on ... (Windows / HD / ...)

Internet-Café Server/Client Application Open CD, Start Browser, Lock remote client, etc.

MultipleFuncsWithOneHotkey Start different funcs by hitting one hotkey different times

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

    • FMS
      By FMS
      Hello,

      I've an error and don't know why and hope somebody can help me..
      I think maybe i din't include somethin for the "ByRef" function, but i could be wrong :S
      Anyway here is what i included ...
      #include <ButtonConstants.au3> #include <ComboConstants.au3> #include <EditConstants.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <File.au3> ; for _FileCreate ed. #Include <GuiComboBoxEx.au3> ; for _GUICtrlComboBoxEx_ResetContent #include "EzMySql.au3" #include <Array.au3> This is what i do before the error starts ... (everything else is running properly)
      $query = "SELECT * FROM `users` ;" $hostname = Read_from_ini("app","server","ip","no_server_ip") $dbname = "blokkerreferencedata" $usrname = Read_from_ini("app","server","username","no_server_usr") $Pass = Read_from_ini("app","server","pass","no_server_pass") $SQLport = Read_from_ini("app","server","sql_port","no_server_port") $iresult_rows = "" $iresult_colums = "" $iresult = get_result($query,$hostname,$dbname,$usrname,$Pass,$SQLport,ByRef $iresult_rows,ByRef $iresult_colums) _ArrayDisplay($iresult,"result") Here is the error i get...
      ==> Error in expression.: $iresult = get_result($query,$hostname,$dbname,$usrname,$Pass,$SQLport,ByRef $iresult_rows,ByRef $iresult_colums) $iresult = get_result($query,$hostname,$dbname,$usrname,$Pass,$SQLport,^ ERROR does somebody see what i do wrong here???
      thanks in advanced.

      ps. if it isn't a forgotten "include" --> how does somebody know whish include to use???
       
    • ViciousXUSMC
      By ViciousXUSMC
      I was working on a good way to run a script after x amount of time without needing to run it as a scheduled task so that it can be run from any computer.  I have used AdlibRegister() before with good success for small periods of time but never larges ones (like an hour).  So I tried it out and it looks like it actually works very well.
      One thing that sort of annoyed me though was walking up to the computer and not knowing when it was going to run next, so I tried to plug in a little time check function and it appeared to work on my little test but in production it started to give me some crazy results.
      Breaking it down, I figured most of the issue had to do with two things.
      1.) Bad practice to use Global Variables in a function.  I never understood why, so I try not to do it.  In this example I would need MyFunc() to update $vEndTime and $vStartTime globally so I believe the right way to do this would be to pass the variables to the function ByRef.  But that leads to problem #2
      2.) You can not pass any variables to a function called with AdlibRegister()
      So that leads me to create this topic so that I can learn some new best practices.
      Why exactly is using Global in the function a bad idea on a simple script like this?  How can I pass these to/from the function using AdlibRegister() and if it can't really be done, what is the best way to do this?  
      For now I have my script working without the "check time" feature and I could update/return multiple values from the function with Global scope but I create this thread in hopes to learn more of why/how things can and should not be done.  Also maybe a good tip on how to run a function on a repeat basis with accurate time without AdlibRegister() 
      Regards,
      Edit: Just realized I did not post the example code.
      ;Just a concept this is not my actual script where things were a bit different #Include <Date.au3> Global $iWaitTime = 60000*60 Global $vStartTime = _NowTime(4) HotKeySet("^!t", "CheckTime") AdlibRegister("MyFunc", $iWaitTime) MyFunc() While 1 Sleep(10) WEnd Func MyFunc() $vEndTime = $vStartTime $vStartTime = _NowTime(4) ;do stuff ;do stuff EndFunc Func CheckTime() MsgBox(0, "", "Current Cycle is set for " & $iWaitTime/60000 & " Minutes" & @CRLF & @CRLF & _ "There is " & ($iWaitTime/60000)-(_NowTime(4)-$vStartTime) & " Minutes Left Until Next Cycle") EndFunc The actual code was a bit different, I had to strip the colon out of the time and such.
    • rudi
      By rudi
      Hi.

      Reading the help file I noticed the directive "#forceref" in sereral sample codes, e.g. for "ByRef" in this line:


      #forceref $v1, $v2, $v3, $v4, $v5, $v6, $v7, $v8, $v9, $v10, $v11, $v12, $v13, $v14, $v15, $v16, $v17, $v18, $v19
      What is it's effect? searching the help file, I can find it "outside" of sample code just for this entry:

      Au3check syntax tool

      #forceref $varname [, ...] can be used for inside functions, like the following: Func Test_Numparams($v1 = 0, $v2 = 0, $v3 = 0, $v4 = 0, $v5 = 0, $v6 = 0, $v7 = 0, $v8 = 0, $v9 = 0) #forceref $v1, $v2, $v3, $v4, $v5, $v6, $v7, $v8, $v9

      Same question for #forcedef

      From this postings here I don't get the exact effect either:
      (#forceref)


      (#forcedef)

      Regards, Rudi.
      Regards, Rudi.