Jump to content



Photo

Check that function exists


  • Please log in to reply
20 replies to this topic

#1 Mikeman27294

Mikeman27294

    Insert Member Title Here

  • Active Members
  • PipPipPipPipPipPip
  • 469 posts

Posted 22 February 2012 - 07:19 PM

Hey guys,
I know that you can check to see whether a variable has been declared by using the function IsDeclared. Is there a similar function that can tell me whether a function exists?

Thanks.
Spoiler






#2 JLogan3o13

JLogan3o13

    Down to 98

  • MVPs
  • 2,094 posts

Posted 22 February 2012 - 07:22 PM

Unless I am missing what you're asking, SciTe should tell you if it detects a missing function when you try to Run/Compile. Otherwise, I would think you could check with CTRL + F5 (SyntaxCheck Prod).
J.I spent 10 minutes reviewing code and thinking "What kind of drugs is this guy on?" before realizing it was something I wrote.My Scripts:Include Source with Compiled Script, Disk Maintenance for Windows XP, "Deal-A-Day" Sites, SCCM 2007 Front End, Windows Firewall UDF

#3 jdelaney

jdelaney

    Universalist

  • Active Members
  • PipPipPipPipPipPip
  • 985 posts

Posted 22 February 2012 - 11:56 PM

Alt + L also shows the UDF's on the active sheet...helpful to keep from scrolling up and down.

#4 guinness

guinness

    guinness

  • MVPs
  • 10,372 posts

Posted 23 February 2012 - 12:10 AM

IsDeclared should ideally be used when it's a last resort, though I've never used myself (did back a couple of years ago but that was bad!) Though I can't understand if you would like to know whether or not you've written a function, could you explain?

Example List: _AdapterConnections()_AlwaysRun()_AppMon()_AppMonEx()_BinaryBin()_CheckMsgBox()_CmdLineRaw()_ContextMenu()_DesktopDimensions()_DisplayPassword()_Fibonacci()_FileCompare()_FileCompareContents()_FileNameByHandle()_FilePrefix/SRE()_FindInFile()_GetBackgroundColor()/_SetBackgroundColor()_GetConrolID()_GetCtrlClass()_GetDirectoryFormat()_GetDriveMediaType()_GetFilename()/_GetFilenameExt()_GetHardwareID()_GetIP()_GetIP_Country()_GetOSLanguage()_GetSavedSource_GetStringSize()_GetSystemPaths()_GetURLImage()_GIFImage()_GoogleWeather()_GUICtrlCreateGroup()_GUICtrlListBox_CreateArray()_GUICtrlListView_CreateArray()_GUICtrlListView_SaveCSV()_GUICtrlListView_SaveHTML()_GUICtrlListView_SaveTxt()_GUICtrlListView_SaveXML()_GUICtrlMenu_Recent()_GUICtrlMenu_SetItemImage()_GUICtrlTreeView_CreateArray()_GUIDisable()_GUIImageList_SetIconFromHandle()_GUISetIcon()_Icon_Clear()/_Icon_Set()_InetGet()_InetGetGUI()_InetGetProgress()_IPDetails()_IsFileOlder()_IsGUID()_IsHex()_IsPalindrome()_IsRegKey()_IsStringRegExp()_IsUPX()_IsValidType()_IsWebColor()_Language()_Log()_MicrosoftInternetConnectivity()_MSDNDataType()_PathFull/GetRelative/Split()_PathSplitEx()_PrintFromArray()_ProgressSetMarquee()_ReDim()_RockPaperScissors()/_RockPaperScissorsLizardSpock()_ScrollingCredits_SelfDelete()_SelfRename()_SelfUpdate()_SendTo()_ShellAll()_ShellFile()_ShellFolder()_SingletonHWID()_SingletonPID()_Startup()_StringIsValid()_StringReplaceWholeWord()_StringStripChar()_Temperature()_TrialPeriod()_UKToUSDate()/_USToUKDate()_WinAPI_CreateGUID()_WMIDateStringToDate()/_DateToWMIDateString()AutoIt SearchAutoIt3 PortableAutoItWinGetTitle()/AutoItWinSetTitle()CodingFileInstallrGeoIP databaseGUI - Only Close ButtonGUI ExamplesGUICtrlDeleteImage()GUICtrlGetBkColor()GUICtrlGetStyle()GUIGetBkColor()LockFile()PasteBinSciTE JumpSignature CreatorWM_COPYDATAMore Examples...Updated: 11/04/2013


#5 OfChange

OfChange

    Seeker

  • Banned (NOT IN USE)
  • 4 posts

Posted 23 February 2012 - 12:15 AM

$func = call("Function") if @error then msgbox(1,"Failure","There is no such function")


#6 guinness

guinness

    guinness

  • MVPs
  • 10,372 posts

Posted 23 February 2012 - 12:23 AM

OfChange,

Looking at Call it states...

Both @error and @extended may contain values if the called function set them.


Edited by guinness, 23 February 2012 - 12:31 AM.

Example List: _AdapterConnections()_AlwaysRun()_AppMon()_AppMonEx()_BinaryBin()_CheckMsgBox()_CmdLineRaw()_ContextMenu()_DesktopDimensions()_DisplayPassword()_Fibonacci()_FileCompare()_FileCompareContents()_FileNameByHandle()_FilePrefix/SRE()_FindInFile()_GetBackgroundColor()/_SetBackgroundColor()_GetConrolID()_GetCtrlClass()_GetDirectoryFormat()_GetDriveMediaType()_GetFilename()/_GetFilenameExt()_GetHardwareID()_GetIP()_GetIP_Country()_GetOSLanguage()_GetSavedSource_GetStringSize()_GetSystemPaths()_GetURLImage()_GIFImage()_GoogleWeather()_GUICtrlCreateGroup()_GUICtrlListBox_CreateArray()_GUICtrlListView_CreateArray()_GUICtrlListView_SaveCSV()_GUICtrlListView_SaveHTML()_GUICtrlListView_SaveTxt()_GUICtrlListView_SaveXML()_GUICtrlMenu_Recent()_GUICtrlMenu_SetItemImage()_GUICtrlTreeView_CreateArray()_GUIDisable()_GUIImageList_SetIconFromHandle()_GUISetIcon()_Icon_Clear()/_Icon_Set()_InetGet()_InetGetGUI()_InetGetProgress()_IPDetails()_IsFileOlder()_IsGUID()_IsHex()_IsPalindrome()_IsRegKey()_IsStringRegExp()_IsUPX()_IsValidType()_IsWebColor()_Language()_Log()_MicrosoftInternetConnectivity()_MSDNDataType()_PathFull/GetRelative/Split()_PathSplitEx()_PrintFromArray()_ProgressSetMarquee()_ReDim()_RockPaperScissors()/_RockPaperScissorsLizardSpock()_ScrollingCredits_SelfDelete()_SelfRename()_SelfUpdate()_SendTo()_ShellAll()_ShellFile()_ShellFolder()_SingletonHWID()_SingletonPID()_Startup()_StringIsValid()_StringReplaceWholeWord()_StringStripChar()_Temperature()_TrialPeriod()_UKToUSDate()/_USToUKDate()_WinAPI_CreateGUID()_WMIDateStringToDate()/_DateToWMIDateString()AutoIt SearchAutoIt3 PortableAutoItWinGetTitle()/AutoItWinSetTitle()CodingFileInstallrGeoIP databaseGUI - Only Close ButtonGUI ExamplesGUICtrlDeleteImage()GUICtrlGetBkColor()GUICtrlGetStyle()GUIGetBkColor()LockFile()PasteBinSciTE JumpSignature CreatorWM_COPYDATAMore Examples...Updated: 11/04/2013


#7 OfChange

OfChange

    Seeker

  • Banned (NOT IN USE)
  • 4 posts

Posted 23 February 2012 - 12:26 AM

OfChange,

Looking at Call it states...


Hmm I guess I missed that. I apologize for the misleading post then

#8 Mikeman27294

Mikeman27294

    Insert Member Title Here

  • Active Members
  • PipPipPipPipPipPip
  • 469 posts

Posted 23 February 2012 - 06:04 AM

The reason I am asking is because I am writing a script at the moment in which I am using an array to store the menu information (It helps a lot with customization in the way of languages and customization of hotkeys). I am placing the names of the functions that need to be called in this array, and then when I use GuiCtrlSetOnEvent, if the function named by the array element doesn't exist, it doesn't error.
Spoiler


#9 AlmarM

AlmarM

    Programming my way.

  • Active Members
  • PipPipPipPipPipPip
  • 1,642 posts

Posted 23 February 2012 - 08:49 AM

The reason I am asking is because I am writing a script at the moment in which I am using an array to store the menu information (It helps a lot with customization in the way of languages and customization of hotkeys). I am placing the names of the functions that need to be called in this array, and then when I use GuiCtrlSetOnEvent, if the function named by the array element doesn't exist, it doesn't error.


Then make sure you use the right function names inside the array from the beginning. :)
  • Mikeman27294 likes this

#10 water

water

    ?

  • MVPs
  • 10,693 posts

Posted 23 February 2012 - 08:59 AM

Do you sometimes read the help file :)
It clearly states:
"Sets @error to 0xDEAD and @extended to 0xBEEF if the function does not exist or invalid number of parameters."
$var = "Test1" Call($var) $Er = @error $Ex = @extended ConsoleWrite("$Er: " & $Er & " (dec), " & Hex($Er, 4) & " (hex); $Ex: " & $Ex & " (dec), " & Hex($Ex, 4) & " (hex)" & @CRLF) Call("Test2") $Er = @error $Ex = @extended ConsoleWrite("$Er: " & $Er & " (dec), " & Hex($Er, 4) & " (hex); $Ex: " & $Ex & " (dec), " & Hex($Ex, 4) & " (hex)" & @CRLF) Func Test2($param1) EndFunc   ;==>Test2

Gives you
$Er: 57005 (dec), DEAD (hex); $Ex: 48879 (dec), BEEF (hex) $Er: 57005 (dec), DEAD (hex); $Ex: 48879 (dec), BEEF (hex)
with Autoit 3.3.8.0

@Extended doesn't seem to work (always returns 0) but @error does. It returns @error and @extended as described.

Edited by water, 23 February 2012 - 09:08 AM.

UDFs:

Active Directory (2012-10-12 - Version 1.3.0.0 released) - Download - General Help & Support - Example Scripts - Wiki

OutlookEX (2012-10-07 - Version 0.9.0.0 released) - Download - General Help & Support - Example Scripts - Wiki

ExcelChart (2013-01-21 - Version 0.3.1.1 released) - Download - General Help & Support - Example Scripts

WordEX (2012-12-29 - Version 1.3 released) - Download

ExcelEX (2013-05-11 - Alpha 4 released) - Download


#11 AlmarM

AlmarM

    Programming my way.

  • Active Members
  • PipPipPipPipPipPip
  • 1,642 posts

Posted 23 February 2012 - 09:01 AM

"Sets @error to 0xDEAD and @extended to 0xBEEF if the function does not exist or invalid number of parameters."


Dead and beef, really..? :)

#12 jchd

jchd

    Whatever your capacity, resistance is futile.

  • MVPs
  • 3,251 posts

Posted 23 February 2012 - 12:40 PM

Very old convention.
SQLite official website with full documentation (may be newer than the SQLite library that comes standard with AutoIt)A work-in-progress SQLite3 tutorial. Don't miss other LxyzTHW pages!SQL tutorial (covers generic SQL, but most of it apply to SQLite as well)An excellent eBook covering almost every aspect of SQLite3: a must-read for anyone doing serious workPCRE v8.32 regexp pattern documentation. AutoIt uses a slightly older version so that more advanced features are not all available.RegExp tutorial: enough to get started

#13 water

water

    ?

  • MVPs
  • 10,693 posts

Posted 23 February 2012 - 01:05 PM

Check this: Hexspeak

UDFs:

Active Directory (2012-10-12 - Version 1.3.0.0 released) - Download - General Help & Support - Example Scripts - Wiki

OutlookEX (2012-10-07 - Version 0.9.0.0 released) - Download - General Help & Support - Example Scripts - Wiki

ExcelChart (2013-01-21 - Version 0.3.1.1 released) - Download - General Help & Support - Example Scripts

WordEX (2012-12-29 - Version 1.3 released) - Download

ExcelEX (2013-05-11 - Alpha 4 released) - Download


#14 AlmarM

AlmarM

    Programming my way.

  • Active Members
  • PipPipPipPipPipPip
  • 1,642 posts

Posted 23 February 2012 - 01:22 PM

Aaaah.
Makes sense now. :)

#15 Mikeman27294

Mikeman27294

    Insert Member Title Here

  • Active Members
  • PipPipPipPipPipPip
  • 469 posts

Posted 23 February 2012 - 01:59 PM

Then make sure you use the right function names inside the array from the beginning. ;)

Yes, that would help, but I would like to have error alerts in my program if it doesn't work.



Do you sometimes read the help file :)
It clearly states:
"Sets @error to 0xDEAD and @extended to 0xBEEF if the function does not exist or invalid number of parameters."


I always read the help file. But I am not using the call function, I am using GuiCtrlSetOnEvent, as mentioned earlier.
Spoiler


#16 BrewManNH

BrewManNH

    באָבקעס מיט קודוצ׳ה

  • MVPs
  • 6,861 posts

Posted 23 February 2012 - 02:04 PM

As far as I am aware of, there's no function that checks to see if a function exists. Even if there were, you'd still have to recurse through your array of function names and check them individually, which kind of defeats the purpose of checking it in the first place because you can do it manually just as easily.

How to ask questions the smart way!

Back up and restore Windows user files _Array.au3 - Modified array functions that include support for 2D arrays.ColorChooser - An add-on for SciTE that pops up a color dialog so you can select and paste a color code into a script.

Customizable Splashscreen GUI w/Progress Bar - Create a custom "splash screen" GUI with a progress bar and custom label.

_FileGetProperty - Retrieve the properties of a file SciTE Toolbar - A toolbar demo for use with the SciTE editorGUIRegisterMsg demo - Demo script to show how to use the Windows messages to interact with controls and your GUI.

GUIToolTip UDF Demo - Demo script to show how to use the GUIToolTip UDF to create and use customized tooltips.

Posted Image


#17 JLogan3o13

JLogan3o13

    Down to 98

  • MVPs
  • 2,094 posts

Posted 23 February 2012 - 03:23 PM

Then you'd have to write a function to check to ensure your function to check functions is functioning. I believe that is one of the signs of the Apocalypse :)
J.I spent 10 minutes reviewing code and thinking "What kind of drugs is this guy on?" before realizing it was something I wrote.My Scripts:Include Source with Compiled Script, Disk Maintenance for Windows XP, "Deal-A-Day" Sites, SCCM 2007 Front End, Windows Firewall UDF

#18 BrewManNH

BrewManNH

    באָבקעס מיט קודוצ׳ה

  • MVPs
  • 6,861 posts

Posted 23 February 2012 - 03:41 PM

Recursion level has been exceeded - The earth will cease to exist to prevent noob overflow.

How to ask questions the smart way!

Back up and restore Windows user files _Array.au3 - Modified array functions that include support for 2D arrays.ColorChooser - An add-on for SciTE that pops up a color dialog so you can select and paste a color code into a script.

Customizable Splashscreen GUI w/Progress Bar - Create a custom "splash screen" GUI with a progress bar and custom label.

_FileGetProperty - Retrieve the properties of a file SciTE Toolbar - A toolbar demo for use with the SciTE editorGUIRegisterMsg demo - Demo script to show how to use the Windows messages to interact with controls and your GUI.

GUIToolTip UDF Demo - Demo script to show how to use the GUIToolTip UDF to create and use customized tooltips.

Posted Image


#19 JohnOne

JohnOne

    John

  • Active Members
  • PipPipPipPipPipPip
  • 8,865 posts

Posted 23 February 2012 - 03:56 PM

I think the best way for you to go about this is to handle the error if it occurs.

Are you dynamically setting hotkeys via user input, where they enter the name of a function?

If this is the case, then I suggest you test the result of hotkeyset, as that will fail if the function does
not exist.
AutoIt Absolute Beginners Require a serial
Run('hh mk:@MSITStore:'&StringReplace(@AutoItExe,'.exe','.chm')&'::/html/tutorials/helloworld/helloworld.htm','',@SW_MAXIMIZE)

#20 Mikeman27294

Mikeman27294

    Insert Member Title Here

  • Active Members
  • PipPipPipPipPipPip
  • 469 posts

Posted 24 February 2012 - 06:55 AM

Ok, thanks guys. It's not a requirement, just something I was hoping to get running. Oh well, I will survive :)
Spoiler





0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users