Sign in to follow this  
Followers 0
Themistokles

Automatic Array Initialization does not work

8 posts in this topic

Hello,

I need to create a bunch of arrays and want them to be initialized with 0 (because I do not know which is the value that would be assigned to each element of the array if I would just create it, maybe somebody can tell me) so I can determine which elements have actually been used (the ones that are not 0 at the beginning of each array). I've looked up the "Dim" function in the Keyword/Statement Reference and it says that I just have to type "Dim $Array[50]" and then something I do not understand. Is it "=0" or "[=0]" or "[0]" or something else?

Of course I could just run a While Loop and initialize all arrays, but I need to create about 26 arrays and would like to save the time (and space) I would need for doing this.

As I am going on holiday tomorrow and won't have access to the Internet for four weeks, I would be glad for an answer before, say, 23 o'clock my time, as I live in Germany this is the GMT+1 (or UTC+1) time.

With best wishes

Themistokles

Share this post


Link to post
Share on other sites



You can always just write a function to initialize an array.

Dim $a1[5], $a2[10], $a3[50], $a4[15]

_InitializeArray($a1)
_InitializeArray($a2)
_InitializeArray($a3)
_InitializeArray($a4)

Func _InitializeArray(ByRef $aArray)
    Local $i, $iMax
    $iMax = UBound($aArray)-1
    For $i=0 To $iMax
        $aArray[$i] = 0
    Next
EndFunc

Share this post


Link to post
Share on other sites

Yes, that would be an option. Thank you.

Share this post


Link to post
Share on other sites

Actually, after re-reading your original post. The default value for each array is: 0 or "" (depending on what kind of data you are storing). Either one of these will work. So as long as none of the data you are populating your arrays with matches 0 or "", then you should be fine with just declaring the arrays. Here's a little test for you.

Dim $a1[5]
$a1[1] = 3
$a1[2] = "h"

For $i=0 To 4
    If $a1[$i] = 0 Then ConsoleWrite($i & ": Data is unchanged (0)" & @LF)
    If $a1[$i] = "" Then ConsoleWrite($i & ': Data is unchanged ("")' & @LF)
Next

Notice index 2 evaluates true for the statement $a1[$i] = 0 because the value stored in the array is not a integer.

Share this post


Link to post
Share on other sites

Ok, thank you very much. As I am going to sleep now I won't be able to answer any further post.

Themistokles

Share this post


Link to post
Share on other sites

#7 ·  Posted (edited)

I believe _ArrayCreate was removed with the current version of AutoIt (3.2.12) due to new array handling.

Bob

Edited by YellowLab

You can't see a rainbow without first experiencing the rain.

Share this post


Link to post
Share on other sites

I believe _ArrayCreate was removed with the current version of AutoIt (3.2.12) due to new array handling.

Bob

_ArrayCreate() documentation has been removed. The function is still present but may be removed at a later time. Scripts should be updated to use the array initialization syntax built into AutoIt.

Still there. :)


[font="Georgia"]Chances are, I'm wrong.[/font]HotKey trouble?Stringregexp GuideAutoIT Current Version

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