Jump to content

Variable Problem


Recommended Posts

HotKeySet("t", "Test")
Global $Xcoords[0]=562, $Xcoords[1]=547, $Xcoords[2]=576, $Xcoords[3]=534, $Xcoords[4]=562, $Xcoords[5]=591, $Xcoords[6]=518, $Xcoords[7] = 549
Global $Xcoords[8]=580, $Xcoords[9]=605, $Xcoords[10]=503, $Xcoords[11]=531, $Xcoords[12]=561, $Xcoords[13]=591, $Xcoords[14]=621, $Xcoords[15]=484
Global $Xcoords[16]=518, $Xcoords[17]=547, $Xcoords[18]=577, $Xcoords[19]=608, $Xcoords[20]=639, $Xcoords[21]=470, $Xcoords[22]=500, $Xcoords[23]=532
Global $Xcoords[24]=562, $Xcoords[25]=594, $Xcoords[26]=627, $Xcoords[27]=658, $Xcoords[28]=448, $Xcoords[29]=483, $Xcoords[30]=513, $Xcoords[31]=546
Global $Xcoords[32]=580, $Xcoords[33]=612, $Xcoords[34]=644, $Xcoords[35]=676, $Xcoords[36]=430, $Xcoords[37]=462, $Xcoords[39]=495, $Xcoords[40]=530
Global $Xcoords[41]=562, $Xcoords[42]=593, $Xcoords[43=629, $Xcoords[44]=663, $Xcoords[45]=695

Global $Ycoords[0]=490, $Ycoords[1]=516, $Ycoords[2]=516, $Ycoords[3]=547, $Ycoords[4]=547, $Ycoords[5]=547, $Ycoords[6]=580, $Ycoords[7]=580
Global $Ycoords[8]=580, $Ycoords[9]=580, $Ycoords[10]=612, $Ycoords[11]=612, $Ycoords[12]=612, $Ycoords[13]=612, $Ycoords[14]=612, $Ycoords[15]=647
Global $Ycoords[16]=647, $Ycoords[17]=647, $Ycoords[18]=647, $Ycoords[19]=647, $Ycoords[20]=647, $Ycoords[21]=683, $Ycoords[22]=683, $Ycoords[23]=683
Global $Ycoords[24]=683, $Ycoords[25]=683, $Ycoords[26]=683, $Ycoords[27]=683, $Ycoords[28]=721, $Ycoords[29]=721, $Ycoords[30]=721, $Ycoords[31]=721
Global $Ycoords[32]=721, $Ycoords[33]=721, $Ycoords[34]=721, $Ycoords[35]=721, $Ycoords[36]=764, $Ycoords[37]=764, $Ycoords[39]=764, $Ycoords[40]=764
Global $Ycoords[41]=764, $Ycoords[42]=764, $Ycoords[43]=764, $Ycoords[44]=764, $Ycoords[45]=764

Func test()
    $x=0
    Do
        MouseMove($Xcoords[$x],$Ycoords[$x])
        sleep(50)
        $x=$x+1
    Until $x=45

endfunc
    while 1
        sleep("50")
    wend

Everytime I run this, it gets stuck at $Xcoords[8]=580, giving me the error message "Array variable subscript badly formatted". I have formatted it the same way as the 7 variables before it so I don't see how there is a problem.

EDIT: I just realized I posted in the Au2 forums..God am I tired.

Edited by mrnoob
Link to comment
Share on other sites

Link to comment
Share on other sites

;HotKeySet("z", "Circle")
;HotKeySet("x", "X")
HotKeySet("t", "Test")
Global $Xcoords[0]=562, $Xcoords[1]=547, $Xcoords[2]=576, $Xcoords[3]=534, $Xcoords[4]=562, $Xcoords[5]=591, $Xcoords[6]=518, $Xcoords[7] = 549
Global $Xcoords[8]=580, $Xcoords[9]=605, $Xcoords[10]=503, $Xcoords[11]=531, $Xcoords[12]=561, $Xcoords[13]=591, $Xcoords[14]=621, $Xcoords[15]=484
Global $Xcoords[16]=518, $Xcoords[17]=547, $Xcoords[18]=577, $Xcoords[19]=608, $Xcoords[20]=639, $Xcoords[21]=470, $Xcoords[22]=500, $Xcoords[23]=532
Global $Xcoords[24]=562, $Xcoords[25]=594, $Xcoords[26]=627, $Xcoords[27]=658, $Xcoords[28]=448, $Xcoords[29]=483, $Xcoords[30]=513, $Xcoords[31]=546
Global $Xcoords[32]=580, $Xcoords[33]=612, $Xcoords[34]=644, $Xcoords[35]=676, $Xcoords[36]=430, $Xcoords[37]=462, $Xcoords[39]=495, $Xcoords[40]=530
Global $Xcoords[41]=562, $Xcoords[42]=593, $Xcoords[43=629, $Xcoords[44]=663, $Xcoords[45]=695

Global $Ycoords[0]=490, $Ycoords[1]=516, $Ycoords[2]=516, $Ycoords[3]=547, $Ycoords[4]=547, $Ycoords[5]=547, $Ycoords[6]=580, $Ycoords[7]=580
Global $Ycoords[8]=580, $Ycoords[9]=580, $Ycoords[10]=612, $Ycoords[11]=612, $Ycoords[12]=612, $Ycoords[13]=612, $Ycoords[14]=612, $Ycoords[15]=647
Global $Ycoords[16]=647, $Ycoords[17]=647, $Ycoords[18]=647, $Ycoords[19]=647, $Ycoords[20]=647, $Ycoords[21]=683, $Ycoords[22]=683, $Ycoords[23]=683
Global $Ycoords[24]=683, $Ycoords[25]=683, $Ycoords[26]=683, $Ycoords[27]=683, $Ycoords[28]=721, $Ycoords[29]=721, $Ycoords[30]=721, $Ycoords[31]=721
Global $Ycoords[32]=721, $Ycoords[33]=721, $Ycoords[34]=721, $Ycoords[35]=721, $Ycoords[36]=764, $Ycoords[37]=764, $Ycoords[39]=764, $Ycoords[40]=764
Global $Ycoords[41]=764, $Ycoords[42]=764, $Ycoords[43]=764, $Ycoords[44]=764, $Ycoords[45]=764

Func test()
    $x=0
    Do
        MouseMove($Xcoords[$x],$Ycoords[$x])
        sleep(50)
        $x=$x+1
    Until $x=45

endfunc
    while 1
        sleep("50")
    wend

Everytime I run this, it gets stuck at $Xcoords[8]=580, giving me the error message "Array variable subscript badly formatted". I have formatted it the same way as the 7 variables before it so I don't see how there is a problem.

Edited by mrnoob
Link to comment
Share on other sites

take a look at stringsplit()

;HotKeySet("z", "Circle")
;HotKeySet("x", "X")
HotKeySet("t", "Test")

Global $Xcoords = StringSplit("562,547,576,534,562,591,518,549,580,605,503,531,561,591,621,484,518,547,577,608,639,470,500,532," & _
        "562,594,627,658,448,483,513,546,580,612,644,676,430,462,495,530,562,593,629,663,695", ",")
        
        
;Global $Ycoords[0]=490, $Ycoords[1]=516, $Ycoords[2]=516, $Ycoords[3]=547, $Ycoords[4]=547, $Ycoords[5]=547, $Ycoords[6]=580, $Ycoords[7]=580
;Global $Ycoords[8]=580, $Ycoords[9]=580, $Ycoords[10]=612, $Ycoords[11]=612, $Ycoords[12]=612, $Ycoords[13]=612, $Ycoords[14]=612, $Ycoords[15]=647
;Global $Ycoords[16]=647, $Ycoords[17]=647, $Ycoords[18]=647, $Ycoords[19]=647, $Ycoords[20]=647, $Ycoords[21]=683, $Ycoords[22]=683, $Ycoords[23]=683
;Global $Ycoords[24]=683, $Ycoords[25]=683, $Ycoords[26]=683, $Ycoords[27]=683, $Ycoords[28]=721, $Ycoords[29]=721, $Ycoords[30]=721, $Ycoords[31]=721
;Global $Ycoords[32]=721, $Ycoords[33]=721, $Ycoords[34]=721, $Ycoords[35]=721, $Ycoords[36]=764, $Ycoords[37]=764, $Ycoords[39]=764, $Ycoords[40]=764
;Global $Ycoords[41]=764, $Ycoords[42]=764, $Ycoords[43]=764, $Ycoords[44]=764, $Ycoords[45]=764

test()

Func test()
    $x = 0
    Do
        MouseMove($Xcoords[$x], $x)
        Sleep(50)
        $x = $x + 1
    Until $x = 45
EndFunc   ;==>test

MsgBox(0x0,"test", "Complete   ", 3)

8)

NEWHeader1.png

Link to comment
Share on other sites

Declare your variables as arrays using Dim, then populate the arrays with each on a separate line.

IE Dev ToolbarMSDN: InternetExplorer ObjectMSDN: HTML/DHTML Reference Guide[quote]It is surprising what a man can do when he has to, and how little most men will do when they don't have to. - Walter Linn[/quote]--------------------[font="Franklin Gothic Medium"]Post a reproducer with less than 100 lines of code.[/font]
Link to comment
Share on other sites

I just tried running it in the beta (of AU3) and it still gives me the same error.

Stop double-posting.

You got a very good answer from Valuater in your other copy of this topic!

:whistle:

P.S. Seems this got moved from AU2. Sorry for the flame. But Valuater did answer the question.

Edited by PsaltyDS
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

Well that wasn't confusing at all...

IE Dev ToolbarMSDN: InternetExplorer ObjectMSDN: HTML/DHTML Reference Guide[quote]It is surprising what a man can do when he has to, and how little most men will do when they don't have to. - Walter Linn[/quote]--------------------[font="Franklin Gothic Medium"]Post a reproducer with less than 100 lines of code.[/font]
Link to comment
Share on other sites

Well that wasn't confusing at all...

Same here.

I'm losing my mind, or the Forum database is losing my mind. Wait... :whistle:

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

Anyone with over 2000 forum posts must have lost it a long time ago. :whistle:

IE Dev ToolbarMSDN: InternetExplorer ObjectMSDN: HTML/DHTML Reference Guide[quote]It is surprising what a man can do when he has to, and how little most men will do when they don't have to. - Walter Linn[/quote]--------------------[font="Franklin Gothic Medium"]Post a reproducer with less than 100 lines of code.[/font]
Link to comment
Share on other sites

Yes, silly me for posting in the AU2 forums =D But as for that double reply within this topic, I don't know how that happened.

Anyhow, thanks Valuater; solved my problem completely. But I have a new one!

HotKeySet("t", "PosGet")
Global $Xcoords
Global $YCoords
Global $N = 2

Func PosGet()
    $Pos = MouseGetPos()
        $Xcoords[$N] = $pos[0]
        $N = $N + 1
        $Ycoords[$N] = $pos[1]
        $N = $N + 1
EndFunc;==>PosGet

    
    
While 1
    sleep(50)
WEnd

Is it not possible to use variables within others? I didn't see any mention of it in the help file but I suspected it would be legal.

Edited by mrnoob
Link to comment
Share on other sites

Global $Xcoords[8]=580, $Xcoords[9]=605, $Xcoords[10]=503, $Xcoords[11]=531, $Xcoords[12]=561, $Xcoords[13]=591, $Xcoords[14]=621, $Xcoords[15]=484
this means that you are declaring $Xcoords again, so all previous data will be erased.

1st: you cant put data in a array when you declare him (not on that way)

2nd: you gave your array 8 elements. but your are putting data in the 9th, 10th....?

Edited by kip
Link to comment
Share on other sites

Try this out:

#include <array.au3>

Global $Xcoords[1] = [0]
Global $YCoords[1] = [0]

HotKeySet("t", "PosGet")
HotKeySet("x", "_ShowCoord")
HotKeySet("y", "_ShowCoord")
HotKeySet("{ESC}", "_Quit")

While 1
    Sleep(50)
WEnd


Func PosGet()
    $Pos = MouseGetPos()
    _ArrayAdd($Xcoords, $Pos[0])
    $Xcoords[0] = UBound($Xcoords) - 1
    _ArrayAdd($YCoords, $Pos[1])
    $YCoords[0] = UBound($YCoords) - 1
EndFunc   ;==>PosGet

Func _ShowCoord()
    Switch @HotKeyPressed
        Case "x"
            _ArrayDisplay($Xcoords, "$Xcoords")
        Case "y"
            _ArrayDisplay($YCoords, "$Ycoords")
    EndSwitch
EndFunc   ;==>_ShowCoord

Func _Quit()
    Exit
EndFunc   ;==>_Quit

"t" = put mouse location into arrays

"x" = display collected $Xcoords

"y" = display collected $Ycoords

ESC = exit script

:whistle:

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

Yes, silly me for posting in the AU2 forums =D But as for that double reply within this topic, I don't know how that happened.

Anyhow, thanks Valuater; solved my problem completely. But I have a new one!

HotKeySet("t", "PosGet")
Global $Xcoords
Global $YCoords
Global $N = 2

Func PosGet()
    $Pos = MouseGetPos()
        $Xcoords[$N] = $pos[0]
        $N = $N + 1
        $Ycoords[$N] = $pos[1]
        $N = $N + 1
EndFunc;==>PosGet

    
    
While 1
    sleep(50)
WEnd

Is it not possible to use variables within others? I didn't see any mention of it in the help file but I suspected it would be legal.

You need to declare (Dim) $xcoords and $Ycoords as arrays, and then redimensionalize (ReDim) them each time you add an element.

#include <Array.au3>

HotKeySet("{INS}", "Terminate")
HotKeySet("t", "PosGet")

Dim $Xcoords[1]
Dim $Ycoords[1]
Global $N = 0

Func PosGet()
    Local $Pos = MouseGetPos()
    If IsArray($Pos) Then
        ReDim $Xcoords[$N + 1]
        ReDim $Ycoords[$N + 1]
        $Xcoords[$N] = $Pos[0]
        $Ycoords[$N] = $Pos[1]
        $N = $N + 1
    Else
        MsgBox(0, "Error", "Error getting mouse position.")
        Exit 2
    EndIf
EndFunc;==>PosGet



    
    
While 1
    Sleep(10)
WEnd

Func Terminate()
    _ArrayDisplay($Xcoords)
    Exit
EndFunc

Edit: PSaltyDS's approach is just as applicable :whistle:

Edited by mikehunt114
IE Dev ToolbarMSDN: InternetExplorer ObjectMSDN: HTML/DHTML Reference Guide[quote]It is surprising what a man can do when he has to, and how little most men will do when they don't have to. - Walter Linn[/quote]--------------------[font="Franklin Gothic Medium"]Post a reproducer with less than 100 lines of code.[/font]
Link to comment
Share on other sites

If I was doing this function for myself, it would use a 2D array:

#include <array.au3>

Global $avCoords[1][2] = [[0, ""]]

HotKeySet("t", "PosGet")
HotKeySet("x", "_ShowCoord")
HotKeySet("{ESC}", "_Quit")

While 1
    Sleep(50)
WEnd


Func PosGet()
    $Pos = MouseGetPos()
    $avCoords[0][0] = UBound($avCoords)
    ReDim $avCoords[$avCoords[0][0] + 1][2]
    $avCoords[$avCoords[0][0]][0] = $Pos[0]
    $avCoords[$avCoords[0][0]][1] = $Pos[1]
EndFunc   ;==>PosGet

Func _ShowCoord()
    _ArrayDisplay($avCoords, "$avCoords")
EndFunc   ;==>_ShowCoord

Func _Quit()
    Exit
EndFunc   ;==>_Quit

Only have to look in one place for all the mouse data that way.

:whistle:

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

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
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...