# Need some help with variables.

## Recommended Posts

Firstly, heres an example bit of code.

```If \$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 :/

##### Share on other sites

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 by VeryGary

##### Share on other sites

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.

##### Share on other sites

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.

##### Share on other sites

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

##### Share on other sites

```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```

Monkey's are, like, natures humans.

##### Share on other sites

```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.

##### Share on other sites

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.

##### Share on other sites

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 by JohnOne

Monkey's are, like, natures humans.

##### Share on other sites

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 by somdcomputerguy

- Bruce /*somdcomputerguy */  If you change the way you look at things, the things you look at change.

##### Share on other sites

Appreciate all your help guys, will be carrying on with this next weekend!

##### Share on other sites

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.

Monkey's are, like, natures humans.

##### Share on other sites

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.

## Create an account

Register a new account

×

• Wiki

• Back

• Git