Jump to content
Sign in to follow this  
Tippex

How to deal with duplicate Global Constants?

Recommended Posts

Tippex

When checking that my script compiles with the latest AutoIT beta, I found that the new "Constants.au3" include (used for other includes such as "File.au3") now has a Global Const $MB_IConstop   = 16 ; Stop-sign icon which was already being set in one of my existing includes called "ExtMsgBox.au3" (to the same value).

I'd like my script to be compilable in both the production and beta AutoIT with the least changes to my script or the UDFs it includes. The only idea i have at the moment is to comment out "Global Const $MB_IConstop   = 16 ; Stop-sign icon" from "ExtMsgBox.au3" and to replace the production "Constants.au3" with the new one from the beta. Is there a better way please? Is there way to somehow check if "$MB_IConstop" is already defined and only set it if it isn't? Is there a compiler option that will effectively "comment out" $MB_IConstop if the AutoIT version is greater than the Production version? Thanks!

Share this post


Link to post
Share on other sites
FireFox

Hi,

Delete the constants declaration lines in your UDFs.

Edit: I don't see a clean way to do it except to make your own include with all the constants renamed (even I find that dirty too).

Br, FireFox.

Edited by FireFox

 

OS : Win XP SP2 (32 bits) / Win 7 SP1 (64 bits) / Win 8 (64 bits) | Autoit version: latest stable / beta.
Hardware : Intel(R) Core(TM) i5-2400 CPU @ 3.10Ghz / 8 GiB RAM DDR3.

My UDFs : Skype UDF | TrayIconEx UDF | GUI Panel UDF | Excel XML UDF | Is_Pressed_UDF

My Projects : YouTube Multi-downloader | FTP Easy-UP | Lock'n | WinKill | AVICapture | Skype TM | Tap Maker | ShellNew | Scriptner | Const Replacer | FT_Pocket | Chrome theme maker

My Examples : Capture toolIP Camera | Crosshair | Draw Captured Region | Picture Screensaver | Jscreenfix | Drivetemp | Picture viewer

My Snippets : Basic TCP | Systray_GetIconIndex | Intercept End task | Winpcap various | Advanced HotKeySet | Transparent Edit control

 

Share this post


Link to post
Share on other sites
Melba23

Tippex,

The latest version of the UDF has changed those Constant names for that very reason - look at the latest version. ;)

M23


Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind._______My UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Share this post


Link to post
Share on other sites
Tippex

Thanks!

Share this post


Link to post
Share on other sites
willichan

Assign("MB_IConstop", 16, 2)

 

It would be a var instead of a const, but would still get the job done.

Idealy you should be able to do

If Not IsDeclared("MB_IConstop") Then Global Const $MB_IConstop = 16

but the syntax checker still rejects it if the constant is already defined.

Share this post


Link to post
Share on other sites
BrewManNH

@willichan

Or you could just change the names of the variables or comment out the ones that are conflicting in the non-standard variables. Which would be far better than trying to use Assign or IsDeclared.


If I posted any code, assume that code was written using the latest release version unless stated otherwise. Also, if it doesn't work on XP I can't help with that because I don't have access to XP, and I'm not going to.
Give a programmer the correct code and he can do his work for a day. Teach a programmer to debug and he can do his work for a lifetime - by Chirag Gude
How to ask questions the smart way!

I hereby grant any person the right to use any code I post, that I am the original author of, on the autoitscript.com forums, unless I've specifically stated otherwise in the code or the thread post. If you do use my code all I ask, as a courtesy, is to make note of where you got it from.

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 editor  -  GUIRegisterMsg demo - Demo script to show how to use the Windows messages to interact with controls and your GUI.  -   Latin Square password generator

Share this post


Link to post
Share on other sites
Tippex

Thanks all. melba23's update sorted my problem out but it would be really good if the IsDeclared condition was allowed by the syntax checker.

Share this post


Link to post
Share on other sites
willichan

@willichan

Or you could just change the names of the variables or comment out the ones that are conflicting in the non-standard variables. Which would be far better than trying to use Assign or IsDeclared.

In general, I agree.  But in the context of not wanting to have two versions of code for stable vs beta compiles ... I guess its a pain either way.

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
Sign in to follow this  

×