#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