Asamoya Posted November 26, 2011 Posted November 26, 2011 Firstly, heres an example bit of code. expandcollapse popupIf $o = $n Then Call ("TIGER") Return Else Send ($textarray0[2]) Send ("{TAB}") Send ("{TAB}") Send ($textarray0[1]) Send ("{TAB}") EndIf $o = $o +1 If $o = $n Then Call ("TIGER") Return Else Send ($textarray1[2]) Send ("{TAB}") Send ("{TAB}") Send ($textarray1[1]) Send ("{TAB}") EndIf $o = $o +1 If $o = $n Then Call ("TIGER") Return Else Send ($textarray2[2]) Send ("{TAB}") Send ("{TAB}") Send ($textarray2[1]) Send ("{TAB}") EndIf $o = $o +1 If $o = $n Then Call ("TIGER") Return Else Send ($textarray3[2]) Send ("{TAB}") Send ("{TAB}") Send ($textarray3[1]) Send ("{TAB}") EndIf I was wondering, is there any way to shorten this code to something like this: While 1 If $o = $n Then Call ("TIGER") Return Else Send ($textarray$o[2]) Send ("{TAB}") Send ("{TAB}") Send ($textarray$o[1]) Send ("{TAB}") EndIf $o = $o +1 WEnd i.e. so the function changes based on the value of $o, without having to do the long bit of code for $textarray0 $textarray1 $textarray2 $textarray3 etc as in shown in the first code box. Hope I explained it clearly :/
VeryGary Posted November 27, 2011 Posted November 27, 2011 (edited) It looks like what you want is a two dimensional array, with an x and y coordinate, such as: Dim $textarray[3][3] ... For $o = 1 to 2 If $o = $n Then Call ("TIGER") Return Else Send ($textarray[$o][2]) Send ("{TAB}") Send ("{TAB}") Send ($textarray[$o][1]) Send ("{TAB}") EndIf Next Edited November 27, 2011 by VeryGary
somdcomputerguy Posted November 27, 2011 Posted November 27, 2011 Use the ampersand (&) character to concatenate stuff. Like this - $textarray & $o. See Language Reference|Operators in the Helpfile. - Bruce /*somdcomputerguy */ If you change the way you look at things, the things you look at change.
Asamoya Posted November 27, 2011 Author Posted November 27, 2011 Hm, I'm trying VeryGary's solution, but have run into a problem Is it possible to populate a row of an array with stringsplit? What im trying and getting an error (well not an error, just the $textarray array contains no data): $textarray[0] = StringSplit ($gettext[0], " ", 1) What I want to get is: $textarray[0][0] = index number $textarray[0][1] = string part 1 $textarray[0][2] = string part 2.
Asamoya Posted November 27, 2011 Author Posted November 27, 2011 Still no luck at the moment, my long bit of code works perfectly, I just wanted to make it a bit shorter. I guess I'll leave it as it is for now! Thanks
JohnOne Posted November 27, 2011 Posted November 27, 2011 While 1 If $o = $n Then Call ("TIGER") ExitLoop Else Send ($textarray0[2]) Send ("{TAB}") Send ("{TAB}") Send ($textarray0[1]) Send ("{TAB}") EndIf $o += 1 WEnd AutoIt Absolute Beginners Require a serial Pause Script Video Tutorials by Morthawt ipify Monkey's are, like, natures humans.
Asamoya Posted November 27, 2011 Author Posted November 27, 2011 While 1 If $o = $n Then Call ("TIGER") ExitLoop Else Send ($textarray0[2]) Send ("{TAB}") Send ("{TAB}") Send ($textarray0[1]) Send ("{TAB}") EndIf $o += 1 WEnd Thanks for replying, with your code the variable stays as $textarray0 for each loop. In my script, the variable needs to change with each run of the loop i.e. $textarray0 -> $textarray1 -> $textarray2 etc. Hence the attempt to include $o in the variable.
somdcomputerguy Posted November 27, 2011 Posted November 27, 2011 Hence the attempt to include $o in the variable.Use the ampersand (&) character to concatenate stuff. Like this - $textarray & $o. See Language Reference|Operators in the Helpfile. - Bruce /*somdcomputerguy */ If you change the way you look at things, the things you look at change.
JohnOne Posted November 27, 2011 Posted November 27, 2011 (edited) Thanks for replying, with your code the variable stays as $textarray0 for each loop. In my script, the variable needs to change with each run of the loop i.e. $textarray0 -> $textarray1 -> $textarray2 etc. Hence the attempt to include $o in the variable. Of course, my mistake. You can put your $textarrays into another array, and increment it to get around that. eg $aatextarray[5] = [$textarray0,$textarray1,$textarray2,$textarray3,$textarray4] $count = 0 While 1 Local $myarray = $aatextarray[$count] If $o = $n Then Call ("TIGER") ExitLoop Else Send ($myarray[2]) Send ("{TAB}") Send ($myarray[1]) Send ("{TAB}") Send ("{TAB}") EndIf $o += 1 $count += 1 WEnd Edited November 27, 2011 by JohnOne AutoIt Absolute Beginners Require a serial Pause Script Video Tutorials by Morthawt ipify Monkey's are, like, natures humans.
somdcomputerguy Posted November 27, 2011 Posted November 27, 2011 (edited) Here, let me try to explain myself a bit clearer. This is what you're getting at Asamoya, ya? For $o = 1 To 3 ConsoleWrite("$textarray" & $o & @LF) Next Edit: Again, this is pretty much the same as JohnOne's example. In that it's just another way of doing the same thing. Edited November 27, 2011 by somdcomputerguy - Bruce /*somdcomputerguy */ If you change the way you look at things, the things you look at change.
Asamoya Posted November 27, 2011 Author Posted November 27, 2011 Appreciate all your help guys, will be carrying on with this next weekend!
JohnOne Posted November 27, 2011 Posted November 27, 2011 Here, let me try to explain myself a bit clearer. This is what you're getting at Asamoya, ya? For $o = 1 To 3 ConsoleWrite("$textarray" & $o & @LF) Next Edit: Again, this is pretty much the same as JohnOne's example. In that it's just another way of doing the same thing. Hi somdcomputerguy, I'm quite sure that this is not possible, you can write to console the name if that variable like that, but you cannot write to console the contents of the array that the variable is, or indeed the contents of a non array variable. AutoIt Absolute Beginners Require a serial Pause Script Video Tutorials by Morthawt ipify Monkey's are, like, natures humans.
somdcomputerguy Posted November 27, 2011 Posted November 27, 2011 Hi somdcomputerguy, I'm quite sure that this is not possible, you can write to console the name if that variable like that, but you cannot write to console the contents of the array that the variable is, or indeed the contents of a non array variable. I see what you're saying. I was under the impression that Asamoya had the variables $textarea1, $textarea2, & $textarea3 already, but wanted to process them without writing three separate, similar, blocks of code. I used the ConsoleWrite just to display the For..Next loop changing the variable. Is it possible to populate a row of an array with stringsplit? This might work.. $Variable = StringSplit ($gettext[0], " ", 1) $textarray[0][$Variable[1]] $textarray[0][$Variable[2]] $textarray[0][$Variable[3]] - Bruce /*somdcomputerguy */ If you change the way you look at things, the things you look at change.
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