Sign in to follow this  
Followers 0
Hackworth82

Loop thru array and get title of checkboxes

2 posts in this topic

Hello. I am new to AUTOIT. I have question for you guys.

I have 3 check-boxes that I need to get the values from and output them as an array.

I am trying to add an element to the $arrayToBeUsedLater array every time the value of an element from the $aArrayOfCheckBoxes is equal to 1

This is the code (I know it is not done by coding standards,; the end part of the code can be ignored if it is not the problem):

#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <array.au3>

   Local $hGUI = GUICreate("Please select your profile", 500, 500)
   Local $OK = GUICtrlCreateButton("OK", 400, 460, 85, 25)
   Local $cancel = GUICtrlCreateButton("Cancel", 300, 460, 85, 25)

   Local $idCheckbox = GUICtrlCreateCheckbox("checkbox 1", 10, 200, 185, 25)
   Local $idCheckbox1 = GUICtrlCreateCheckbox("checkbox 2", 10, 220, 185, 25)
   Local $idCheckbox4 = GUICtrlCreateCheckbox("checkbox 3", 10, 240, 185, 25)

   Local $aArrayOfCheckBoxes[3] = [$idCheckbox, $idCheckbox1, $idCheckbox4]

   Local $control1

   ;will use for output
   Local $arrayToBeUsedLater = []

   For $j = 0 To UBound($aArrayOfCheckBoxes)
      if GUICtrlRead($aArrayOfCheckBoxes[$j]) = 1 Then
         $control1 = GUICtrlRead($aArrayOfCheckBoxes[$j], 1)
         _ArrayAdd($arrayToBeUsedLater, $control1)
         Exit ; <-- there might be a problem here
      EndIf
   Next

   GUISetState(@SW_SHOW, $hGUI)

   While 1
      Switch GUIGetMsg()
         Case $GUI_EVENT_CLOSE, $OK, $cancel
            ExitLoop
      EndSwitch
   WEnd

   While 1
      $msg = GUIGetMsg()
      Select
         Case $msg = $OK
            MsgBox(0, "", "You selected: " & $arrayToBeUsedLater)
            Exit
         Case $msg = $cancel
            MsgBox(0, "", "Your data was not saved ")
            Exit
       EndSelect
   WEnd

The error that i get is this:

....Desktop\AutoIt\test1.au3" (21) : ==> Array variable has incorrect number of subscripts or subscript dimension range exceeded.:
if GUICtrlRead($aArrayOfCheckBoxes[$j]) = 1 Then
if GUICtrlRead(^ ERROR
>Exit code: 1    Time: 0.2369

I believe that the problem might be in the For loop. Can anyone help me ?

Thanks ,

Florin

Share this post


Link to post
Share on other sites



For $j = 0 To UBound($aArrayOfCheckBoxes) -1 ; <<<<<<<

 

1 person likes this

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

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  
Followers 0