computergroove Posted March 23, 2015 Share Posted March 23, 2015 I have a GUI and I am trying to get user input and compare the input to the first column in a 2d array. #include <GUIConstants.au3> #include <File.au3> #include <Array.au3> Global $aRead[][] = [[0],[0]] Global $Path = @ScriptDir & "\data.ini" _FileReadToArray($Path,$aRead,0,";");Reads the contents of data.ini to $aRead. HotKeySet("{ENTER}", "ProcessData");Enter a number and hit enter $Form1 = GUICreate("Form1",800,600,100,100);GUI Main window $edit_field = GUICtrlCreateInput("", 30, 25, 150, 15) GUISetState(@SW_SHOW) GUISetBkColor(0x000000);sets background color on GUI window GUISetState(@SW_SHOW) Func ProcessData() $Input = GUICtrlRead($edit_field) If $Input <> "" Then For $i = 1 To UBound($aRead - 1) If $Input == $aRead[$a] Then $Data = $aRead[$a] _ArrayDisplay($Data) ExitLoop EndIf Next GUICtrlSetData($edit_field,"");Clear the input box EndIf EndFunc data.ini looks like: 1;1 2;2 3;3 4;4 I am trying to use a for loop to compare the user input value to each item in the forst column of my 2d array. If a match is found in $aRead[5] then I want to assign a variable to the data in $aRead[5][2] and exit the for loop and make the input box blank and wait for another user input. If a match isnt found then blank out the user input box. The gui crashes when I enter 1 and hit return and I get an error. What am I doing wrong? Get Scite to add a popup when you use a 3rd party UDF -> http://www.autoitscript.com/autoit3/scite/docs/SciTE4AutoIt3/user-calltip-manager.html Link to comment Share on other sites More sharing options...
water Posted March 23, 2015 Share Posted March 23, 2015 Array $aRead is 0-based because of parameter 3 you pass to _FileReadToArray so the statement For $i = 1 To UBound($aRead - 1) should be For $i = 0 To UBound($aRead, 1) - 1 My UDFs and Tutorials: Spoiler UDFs:Active Directory (NEW 2022-02-19 - Version 1.6.1.0) - Download - General Help & Support - Example Scripts - WikiExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example ScriptsOutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - WikiOutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - DownloadOutlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - WikiPowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - WikiTask Scheduler (NEW 2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs:Excel - Example Scripts - WikiWord - Wiki Tutorials:ADO - WikiWebDriver - Wiki Link to comment Share on other sites More sharing options...
computergroove Posted March 23, 2015 Author Share Posted March 23, 2015 (edited) That still fails. I can enter a value in the input box and when I hit enter the script stops. Edited March 23, 2015 by computergroove Get Scite to add a popup when you use a 3rd party UDF -> http://www.autoitscript.com/autoit3/scite/docs/SciTE4AutoIt3/user-calltip-manager.html Link to comment Share on other sites More sharing options...
water Posted March 23, 2015 Share Posted March 23, 2015 You need to post the error message you get in ScITE. My UDFs and Tutorials: Spoiler UDFs:Active Directory (NEW 2022-02-19 - Version 1.6.1.0) - Download - General Help & Support - Example Scripts - WikiExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example ScriptsOutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - WikiOutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - DownloadOutlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - WikiPowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - WikiTask Scheduler (NEW 2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs:Excel - Example Scripts - WikiWord - Wiki Tutorials:ADO - WikiWebDriver - Wiki Link to comment Share on other sites More sharing options...
computergroove Posted March 23, 2015 Author Share Posted March 23, 2015 (edited) Func ProcessData();Listens to the input box $Input = GUICtrlRead($edit_field) If $Input <> "" Then For $i = 0 To UBound($aRead,1) - 1 If $Input == $aRead[$i] Then;<== This is line 38 MsgBox(0,0,$Input) ExitLoop EndIf Next GUICtrlSetData($edit_field,"");Clear the input box EndIf EndFunc Console output: >"C:\Program Files (x86)\AutoIt3\SciTE\AutoIt3Wrapper\AutoIt3Wrapper.exe" /run /prod /ErrorStdOut /in "C:\Users\user\Desktop\BCVLC.au3" /UserParams +>17:00:35 Starting AutoIt3Wrapper v.14.801.2025.0 SciTE v.3.4.4.0 Keyboard:00000409 OS:WIN_7/Service Pack 1 CPU:X64 OS:X64 Environment(Language:0409) +> SciTEDir => C:\Program Files (x86)\AutoIt3\SciTE UserDir => C:\Users\user\AppData\Local\AutoIt v3\SciTE\AutoIt3Wrapper SCITE_USERHOME => C:\Users\user\AppData\Local\AutoIt v3\SciTE >Running AU3Check (3.3.12.0) from:C:\Program Files (x86)\AutoIt3 input:C:\Users\user\Desktop\BCVLC.au3 +>17:00:35 AU3Check ended.rc:0 >Running:(3.3.12.0):C:\Program Files (x86)\AutoIt3\autoit3.exe "C:\Users\user\Desktop\BCVLC.au3" --> Press Ctrl+Alt+Break to Restart or Ctrl+Break to Stop "C:\Users\user\Desktop\BCVLC.au3" (38) : ==> Array variable has incorrect number of subscripts or subscript dimension range exceeded.: If $Input == $aRead[$i] Then If $Input == ^ ERROR ->17:00:36 AutoIt3.exe ended.rc:1 +>17:00:36 AutoIt3Wrapper Finished. >Exit code: 1 Time: 1.215 Edited March 23, 2015 by computergroove Get Scite to add a popup when you use a 3rd party UDF -> http://www.autoitscript.com/autoit3/scite/docs/SciTE4AutoIt3/user-calltip-manager.html Link to comment Share on other sites More sharing options...
JohnOne Posted March 23, 2015 Share Posted March 23, 2015 (edited) Func ProcessData();Listens to the input box $Input = GUICtrlRead($edit_field) If $Input <> "" Then For $i = 0 To UBound($aRead) - 1 If $Input == $aRead[$i][0] Then;<== This is line 38 MsgBox(0,0,$Input) ExitLoop EndIf Next GUICtrlSetData($edit_field,"");Clear the input box EndIf EndFunc Edited March 23, 2015 by JohnOne AutoIt Absolute Beginners Require a serial Pause Script Video Tutorials by Morthawt ipify Monkey's are, like, natures humans. Link to comment Share on other sites More sharing options...
Solution computergroove Posted March 23, 2015 Author Solution Share Posted March 23, 2015 I got it. I needed to add the column number in the array: Func ProcessData();Listens to the input box $Input = GUICtrlRead($edit_field) If $Input <> "" Then For $i = 0 To UBound($aRead,1) - 1 $Temp = $aRead[$i][1] MsgBox(0,0,$Temp) Next GUICtrlSetData($edit_field,"");Clear the input box EndIf EndFunc Get Scite to add a popup when you use a 3rd party UDF -> http://www.autoitscript.com/autoit3/scite/docs/SciTE4AutoIt3/user-calltip-manager.html Link to comment Share on other sites More sharing options...
Sori Posted March 23, 2015 Share Posted March 23, 2015 don't use == this is autoit, it's just = Why did you suddenly change to $a instead of using $i? #include <GUIConstants.au3> #include <File.au3> #include <Array.au3> Global $aRead[][] = [[0],[0]] Global $Path = @ScriptDir & "\data.ini" _FileReadToArray($Path,$aRead,0,";");Reads the contents of data.ini to $aRead. HotKeySet("{ENTER}", "ProcessData");Enter a number and hit enter $Form1 = GUICreate("Form1",800,600,100,100);GUI Main window $edit_field = GUICtrlCreateInput("", 30, 25, 150, 15) GUISetState(@SW_SHOW) GUISetBkColor(0x000000);sets background color on GUI window GUISetState(@SW_SHOW) while 1 Sleep(10) WEnd Func ProcessData() $Input = GUICtrlRead($edit_field) If $Input <> "" Then For $i = 0 To UBound($aRead - 1) If $Input = $aRead[$i] Then $Data = $aRead[$i] _ArrayDisplay($Data) ExitLoop EndIf Next GUICtrlSetData($edit_field,"");Clear the input box EndIf EndFunc It's still giving me (27) : ==> Array variable has incorrect number of subscripts or subscript dimension range exceeded.: If $Input = $aRead[$i] Then If $Input = ^ ERROR If you need help with your stuff, feel free to get me on my Skype. I often get bored and enjoy helping with projects. Link to comment Share on other sites More sharing options...
Sori Posted March 23, 2015 Share Posted March 23, 2015 I didn't notice that it was 2 dimensional, that would cause it. If you need anything else, post away. If you need help with your stuff, feel free to get me on my Skype. I often get bored and enjoy helping with projects. Link to comment Share on other sites More sharing options...
kylomas Posted March 24, 2015 Share Posted March 24, 2015 (edited) don't use == this is autoit, it's just = Please see the Help file for Operators... == Tests if two strings are equal. Case sensitive. The left and right values are converted to strings if they are not strings already. This operator should only be used if string comparisons need to be case sensitive. Edited March 24, 2015 by kylomas Forum Rules Procedure for posting code "I like pigs. Dogs look up to us. Cats look down on us. Pigs treat us as equals." - Sir Winston Churchill 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