#3879 closed Bug (Fixed)
Dim doesn't change the type of Map to Array
| Reported by: | jchd18 | Owned by: | Jon |
|---|---|---|---|
| Milestone: | 3.3.16.1 | Component: | AutoIt |
| Version: | 3.3.16.0 | Severity: | None |
| Keywords: | Cc: |
Description
Given a variable $v and for all AutoIt datatypes except Map, using Dim to change $v into an Array works fine.
Local $m[] ; a Map
Local $a[5] ; an Array
Local $types = [ _
$m, _
$a, _
8, _
8888888888888888, _
"xyz", _
Binary(12), _
Ptr(555), _
DllStructCreate("long"), _
MsgBox, _
_myFct, _
ObjCreate("shell.application"), _
Null, _
True _
]
Func _myFct()
EndFunc
For $v In $types
ConsoleWrite("$v declared as " & VarGetType($v) & @LF)
Dim $v[3]
ConsoleWrite("$v turned to a " & VarGetType($v) & @LF & @LF)
Next
Dim is important when you get a ByRef variable of unknown type passed to a function, which you need to (re)turn into an Array loaded with data. It's even the only use case of Dim in AutoIt.
For a real-world use case where this can cause a serious bug, see https://www.autoitscript.com/forum/topic/208003-storing-gui-objects-in-an-array-error-subscript-used-on-non-accessible-variable/?do=findComment&comment=1500761
Attachments (0)
Change History (3)
comment:1 Changed 3 years ago by Jpm
- Owner set to Jpm
- Status changed from new to assigned
comment:2 Changed 3 years ago by Jon
- Milestone set to 3.3.15.6
- Owner changed from Jpm to Jon
- Resolution set to Fixed
- Status changed from assigned to closed
Fixed by revision [12733] in version: 3.3.15.6
comment:3 Changed 3 years ago by Jon
- Milestone changed from 3.3.15.6 to 3.3.16.1
Fixed by revision [12734] in version: 3.3.16.1
Guidelines for posting comments:
- You cannot re-open a ticket but you may still leave a comment if you have additional information to add.
- In-depth discussions should take place on the forum.
For more information see the full version of the ticket guidelines here.

Thanks,
Fix sent to Jon