oasis375 Posted October 25, 2014 Share Posted October 25, 2014 $foo = "hello" If $foo = 0 Then ConsoleWrite("wrong") It took me some time till I found the mistake in AutoItScript code. First I assing a value to the variable, then I check if the variable is 0, and the result is positive. Other version: $foo = 0 ;default value ;some processing here $foo = "hello" ;assignment by process ;end of process If $foo = 0 Then ConsoleWrite("process failed") ;final check to know process result Link to comment Share on other sites More sharing options...
Moderators Solution Melba23 Posted October 25, 2014 Moderators Solution Share Posted October 25, 2014 oasis375,When you use comparison operators AutoIt automatically converts then arguments to numbers - and as "hello" converts to 0 you find that the comparison is true. What you need to do is when comparing strings is to use the == operator which forces both sides to string format:$foo = "hello" If $foo == 0 Then ConsoleWrite("wrong")And to prevent the next question of "Why does AutoIt do this", it is a result of using non-typed variables - this was an early design decision by Jon to make AutoIt easy to use which does, at times, cause problems if not properly understood. M23 Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area Link to comment Share on other sites More sharing options...
AutID Posted October 25, 2014 Share Posted October 25, 2014 (edited) Edit: Melba23 types faster! You are comparing a string to a number. I don't even know why this is allowed in autoit but again, this is autoit. Anyway if you want to compare if the string is equal to an string 0 then use double =. $foo = "hello" If $foo == 0 Then ConsoleWrite("wrong" & @LF) If you want to check if your string is not empty then do it like this: $foo = "hello" If $foo <> "" Then ConsoleWrite("wrong" & @LF) Edited October 25, 2014 by AutID https://iblockify.wordpress.com/ Link to comment Share on other sites More sharing options...
Moderators Melba23 Posted October 25, 2014 Moderators Share Posted October 25, 2014 AutID, You are comparing a string to a boolNot so - 0 is a number, booleans are True/False. But your suggested solution is correct. M23 Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area Link to comment Share on other sites More sharing options...
AutID Posted October 25, 2014 Share Posted October 25, 2014 AutID, Not so - 0 is a number, booleans are True/False. But your suggested solution is correct. M23 Again you are faster, I corrected that. Confusion! https://iblockify.wordpress.com/ Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now