Jump to content

How do you declare a 2d array?


square65
 Share

Recommended Posts

  • Moderators

mikell,

The differentiation between Map and Array declaration is already made clear in the 3.3.13.19 Beta Help file:

Both Arrays and Maps use similar syntax, so care is required to ensure the variable is of the correct datatype - this is determined by the first declaration line for the variable:

Using empty [ ] declares a Map:

----------------------------------------------------------
Local $vVar[] ; A Map 
----------------------------------------------------------

Filling the [ ] with a dimension size declares an Array:

----------------------------------------------------------
Local $vVar[3] ; An Array 
----------------------------------------------------------

Assigning element values when declaring makes the variable an Array - these three lines are functionally equivalent:

----------------------------------------------------------
Local $vVar[3] = [1, 2, 3] ; An Array
Local $vVar[] = [1, 2, 3] ; An Array
Local $vVar = [1, 2, 3] ; An Array 
----------------------------------------------------------
And as I said above, I will now add something to make clear that a scoping keyword is obligatory on declaration. :)

M23

Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind

Open spoiler to see 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

 

Link to comment
Share on other sites

  • Moderators

@Melba23, I must admit, 3 different ways to accomplish a "standardized method" is a bit concerning.  Especially if you leave one thing out or add one thing to, it's a different data type all together.

@OP, If you're unsure, just standardize your own coding.  Declare the array with a finite index.

Global $gaArray[1][1]

Manage your code:

<code>
<code>
<etc>
... I need to access my array
... I am now going to index my array with ReDim
<code>
<etc>
</code>

At the point you know your going to need to access the array, then ReDim it, to clear the array, just re-declare it (in the same scope it was created in).

It's worked for years before mapping structured arrays were introduced.

Common sense plays a role in the basics of understanding AutoIt... If you're lacking in that, do us all a favor, and step away from the computer.

Link to comment
Share on other sites

  • Moderators

SmOke_N,

 

3 different ways to accomplish a "standardized method" is a bit concerning

Nothing to do with me - all I do is write the documentation to try and explain it. ;)

M23

Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind

Open spoiler to see 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

 

Link to comment
Share on other sites

Melba,

I already had a look to the beta helpfile, and said nothing more than I said - considering that like most of the OPs I use the 3.3.12.0 (the recommended one on the main download page) in which Maps don't exist yet  :)

Anyway the new helpfile will have to be very explicit to avoid confusion (headaches expected)

Local $test[]    ;declares a Map
Local $test[] = [1, 2, 3] ; An Array

$mMap[3] = "string"  ; fills a map key
$aArray[3] = "string"  ; fills an indexed element

:D

Link to comment
Share on other sites

All variables in AutoIt must use a scope specifier in their declaration, not only arrays.

What is special with arrays is that they must be declared with explicit dimension(s) or with explicit literal initialisation prior to use, irrespective of AutoItSetOption("MustDeclareVars", <setting>).

Also empty arrays can use [0] as the first dimension in declaration:

Local $a[0]    ; an empty 1D array with zero rows
Local $b[0][3] ; an empty 2D array with zero rows of 3 columns
Local $c[2][0] ; a problematic empty array of 2 rows with zero columns!!!
Edited by jchd

This wonderful site allows debugging and testing regular expressions (many flavors available). An absolute must have in your bookmarks.
Another excellent RegExp tutorial. Don't forget downloading your copy of up-to-date pcretest.exe and pcregrep.exe here
RegExp tutorial: enough to get started
PCRE v8.33 regexp documentation latest available release and currently implemented in AutoIt beta.

SQLitespeed is another feature-rich premier SQLite manager (includes import/export). Well worth a try.
SQLite Expert (freeware Personal Edition or payware Pro version) is a very useful SQLite database manager.
An excellent eBook covering almost every aspect of SQLite3: a must-read for anyone doing serious work.
SQL tutorial (covers "generic" SQL, but most of it applies to SQLite as well)
A work-in-progress SQLite3 tutorial. Don't miss other LxyzTHW pages!
SQLite official website with full documentation (may be newer than the SQLite library that comes standard with AutoIt)

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