Sign in to follow this  
Followers 0
Maxel

Declaration of Variables using For

2 posts in this topic

#1 ·  Posted (edited)

Hello,

i know there is probably another post quite like this with all the answers inside in this forum, but before you flame now plz consider that i searched now for like an hour without finding it :/. My tests havent brought me any further either. So here is my Question. Is it possible to declarate Variables with using for ? Like Arrays or such here the Wrong Version so it might be better understood:

WRONG:

for $i = 1 to 10
global $array{$i}[1]
next

Now i DONT want to make a 2dim Array since the ubound function dosent seem to work with more than 2dim and i thought well i make 6 2dim arrays out of my 1 3dim one. So if anyone could help me with a quick tip i would appreciate that! Thx in Advance

greetz Max

edit: Ok then i cant explain the error but nevertheless the first question would help to automate the thing for different problems so an answer would be nice anyway heres the not working code ( plz dont hit me i know i'm quite bad ^^ and havent commented :/ )

edit 2: the error...

Stage 1 Complete

E:downloadsProgrammeautoitscriptsPixeltest.au3 (40) : ==> Error in expression.:

for $x 0 to (ubound($array,3)-1)

for $x 0 ^ ERROR

>Exit code: 1 Time: 9.008

edit 3: i'M stupid ... forgot the = .... might solve the problem ^^ anyway still corious about the first question ;)

edit 4: now i'm getting this error :/ Any Tips ( since i have that post already ^^ )

Stage 1 Complete

E:downloadsProgrammeautoitPixeltest.au3 (45) : ==> No variable given for "Dim", "Local", "Global", "Struct" or "Const" statement.:

redim($it12[$k])

redim^ ERROR

>Exit code: 1 Time: 8.607

heres the original - with repeatable variable declaration i could caugh the lower block together.. tried fast some explaining comments but since it was just a try if it would work i havent been true with commenting

#include <Array.au3>
#include<File.au3>

HotKeySet("{f1}", "pixel")


Global $array[6][3][144]
Global $It12[1]
Global $It13[1]
Global $It14[1]
Global $It15[1]
Global $It16[1]


while 1
    sleep(500)
wend


func pixel()                                                                ; some fast comments here
        
$x=555                                                                      ; x y position where pixelcheck shall start
$y=359

for $k=0 to 2                                                               ; creating 3dim array with hex checksums
    for $i=0 to 5
        for $j=0 to 23
            $array[$i][$k][$j]=hex(PixelGetColor($x+27*$i+$j ,$y+$k))
        next
    Next
Next

ConsoleWrite("Stage 1 Complete")                                            ; reminder for console to see if it rly runs ;)


$z=0                                                                        ; now i want to check for duplicates ( the goal is to get pixel's which are in all 6 ( first dimension of the array ) Groups !
for $y = 0 to (ubound($array,2)-1)
    for $x =0 to (ubound($array,3)-1)
        for $y2 = 0 To (ubound($array,2)-1)
            for $x2 = 0 To (ubound($array,3)-1)
                if $array[$z][$x][$y] = $array[$z+1][$x2][$y2] Then
                    $k=ubound($it12)-1
                    redim($it12[$k])
                    $It12[$k]=$array[$z][$x][$y]
                EndIf
            Next
        Next
    Next
Next

ConsoleWrite("Stage 2 Complete")                                        

$z=1
for $x = 0 to (ubound($It12)-1)                                             ; Checking the IT12 array against the second Group the rest is the same
    for $y2 = 0 To (ubound($array,2)-1)
        for $x2 = 0 To (ubound($array,3)-1)
            if $It12[$x] = $array[$z+1][$x2][$y2] Then
                $k=ubound($item13)-1
                redim($it13[$k])
                $It13[$k]=$It12[$x]
            EndIf
        Next
    Next
Next

ConsoleWrite("Stage 3 Complete")

$z=2
for $x = 0 to (ubound($Item13)-1)
    for $y2 = 0 To (ubound($array,2)-1)
        for $x2 = 0 To (ubound($array,3)-1)
            if $It13[$x] = $array[$z+1][$x2][$y2] Then
                $k=ubound($it14)-1
                redim($it14[$k])
                $It14[$k]=$It13[$x]
            EndIf
        Next
    Next
Next

ConsoleWrite("Stage 4 Complete")

$z=3
for $x = 0 to (ubound($Item14)-1)
    for $y2 = 0 To (ubound($array,2)-1)
        for $x2 = 0 To (ubound($array,3)-1)
            if $It14[$x] = $array[$z+1][$x2][$y2] Then
                $k=ubound($it15)-1
                redim($it15[$k])
                $It15[$k]=$It14[$x]
            EndIf
        Next
    Next
Next

ConsoleWrite("Stage 5 Complete")

$z=4
for $x = 0 to (ubound($Item15)-1)
    for $y2 = 0 To (ubound($array,2)-1)
        for $x2 = 0 To (ubound($array,3)-1)
            if $It15[$x] = $array[$z+1][$x2][$y2] Then
                $k=ubound($it16)-1
                redim($it16[$k])
                $It16[$k]=$It15[$x]
            EndIf
        Next
    Next
Next



for $i = 0 to (ubound($It16)-1)
    ConsoleWrite($It16[$i] & @LF)
next


#cs  old version for output before i found redim
$string = ""
$string2 = ""
For $i = 0 To UBound($array) - 1
    $o="a"
    $p=0
    For $j = 0 To UBound($array, 2) - 1
        $z=$j-24*$p
        $string &=( "$array[" & $i & "][" & $z & $o &"] = " & $array[$i][$j] & @LF)
        $string2 &=( $array[$i][$j] & @LF)
        if $z>22 Then
            $p=$p+1
            if $p=1 Then
                $o="b"
            elseif $p=2 Then
                $o="c"
            elseif $p=3 Then
                $o="d"
            elseif $p=4 Then
                $o="e"
            elseif $p=5 Then
                $o="f"
            elseif $p=6 Then
                $o="g"
            EndIf
        EndIf
    Next
Next

$hFile = FileOpen(@ScriptDir & "2DArray.txt", 2)
FileWrite($hFile, $string)
FileClose($hFile)
$hFile2 = FileOpen(@ScriptDir & "test.txt", 2)
FileWrite($hFile2, $string2)
FileClose($hFile2)
#ce
endfunc
Edited by Maxel

Share this post


Link to post
Share on other sites



Maxel,

UBound works fine with 3D arrays, so there is no need to split your 3D array. :)

Perhaps if you posted the code you were having trouble with we could help you debug it. ;)

M23


Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind._______My UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

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