Zachlr Posted April 24, 2009 Share Posted April 24, 2009 (edited) I don't remember reading that it was impossible, or that it was possible for that matter. Why won't the code below work? $Filters_FilterNames = IniReadSectionNames(@WorkingDir & "\Filters.ini") For $iFilter = 1 To $Filters_FilterNames[0] $Filters_Filter[$iFilter] = GUICtrlCreateMenuItem($Filters_FilterNames[$iFilter], $Filters) Next I get Expected a "=" operator in assignment statement.: $Filters_Filter[$iFilter] = GUICtrlCreateMenuItem($Filters_FilterNames[$iFilter], $Filters) $Filters_Filter^ ERROR ->00:30:59 AutoIT3.exe ended.rc:1 Edited April 24, 2009 by Zachlr Link to comment Share on other sites More sharing options...
Spiff59 Posted April 24, 2009 Share Posted April 24, 2009 Well, your example isn't complete enough to be sure, but declaring the array might get you a bit further along... $Filters_FilterNames = IniReadSectionNames(@WindowsDir & "\win.ini") Dim $Filters_Filter[$Filters_FilterNames[0] + 1] For $iFilter = 1 To $Filters_FilterNames[0] $Filters_Filter[$iFilter] = GUICtrlCreateMenuItem($Filters_FilterNames[$iFilter], $Filters) Next Link to comment Share on other sites More sharing options...
Mike23 Posted April 24, 2009 Share Posted April 24, 2009 (edited) first you use: $Filters_FilterNames = IniReadSectionNames(@WindowsDir & "\win.ini") then $Filters_FilterNames[$iFilter] so you have a var and array with the same name. if you look @ this source. easy example Local array[20] $temp = 0 While temp > 20 array[$temp] = $temp $temp = $temp + 1 Wend gl Edited April 24, 2009 by Mike23 Link to comment Share on other sites More sharing options...
Zachlr Posted April 24, 2009 Author Share Posted April 24, 2009 Well, your example isn't complete enough to be sure, but declaring the array might get you a bit further along... $Filters_FilterNames = IniReadSectionNames(@WindowsDir & "\win.ini") Dim $Filters_Filter[$Filters_FilterNames[0] + 1] For $iFilter = 1 To $Filters_FilterNames[0] $Filters_Filter[$iFilter] = GUICtrlCreateMenuItem($Filters_FilterNames[$iFilter], $Filters) Next But IniReadSectionNames() declares an array doesn't it? first you use: $Filters_FilterNames = IniReadSectionNames(@WindowsDir & "\win.ini") then $Filters_FilterNames[$iFilter] so you have a var and array with the same name. if you look @ this source. easy example Local array[20] $temp = 0 While temp > 20 array[$temp] = $temp $temp = $temp + 1 Wend gl I'm not sure I quite understand what you mean. Maybe I should explain what I am trying to do first. Upon start-up my script is supposed to read an ini file that contains information about each filter. I then creates a menu item from the section name. It also must declare a variable different from that of the filter names, so that the script can tell when it is clicked. I want to create an array of control IDs for each menu item, using a loop. The loop should repeat for each new filter name, and write a variable (the control ID) in an array. I hope that makes a little more sense. Thanks. Link to comment Share on other sites More sharing options...
Spiff59 Posted April 24, 2009 Share Posted April 24, 2009 Yes, IniReadSectionNames() declares and returns an array for you. Your second array you build in your loop that consists of control ID's returned by GUICtrlCreateMenuItem wasn't declared though. Didn't inserting a Dim/Local/Global for the second array get you past this trouble spot? Link to comment Share on other sites More sharing options...
PsaltyDS Posted April 24, 2009 Share Posted April 24, 2009 Yes, IniReadSectionNames() declares and returns an array for you.Your second array you build in your loop that consists of control ID's returned by GUICtrlCreateMenuItem wasn't declared though. Didn't inserting a Dim/Local/Global for the second array get you past this trouble spot?Alternatively, is it just a typo? Did you mean to create the menu item and store its control ID in place of the section name in the same array? Then you just need to fix the array names to match: "$Filters_FilterNames" gets the output from IniReadSectionNames(), then you used "$Filters_Filter" inside the loop. Valuater's AutoIt 1-2-3, Class... Is now in Session!For those who want somebody to write the script for them: RentACoder"Any technology distinguishable from magic is insufficiently advanced." -- Geek's corollary to Clarke's law Link to comment Share on other sites More sharing options...
Zachlr Posted April 25, 2009 Author Share Posted April 25, 2009 Yes, IniReadSectionNames() declares and returns an array for you.Your second array you build in your loop that consists of control ID's returned by GUICtrlCreateMenuItem wasn't declared though. Didn't inserting a Dim/Local/Global for the second array get you past this trouble spot?Doh! I was declaring a variable instead of an array. My script now works as it should. Thanks.Alternatively, is it just a typo? Did you mean to create the menu item and store its control ID in place of the section name in the same array? Then you just need to fix the array names to match: "$Filters_FilterNames" gets the output from IniReadSectionNames(), then you used "$Filters_Filter" inside the loop. No, I the section names and the control IDs are both referenced later, so the need to be different. Thanks for the reply though. 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