Opened 12 years ago
Last modified 10 months ago
#2279 assigned Bug
For loop not working as expected
Reported by: | BrewManNH | Owned by: | Jon |
---|---|---|---|
Milestone: | Component: | AutoIt | |
Version: | 3.3.8.1 | Severity: | None |
Keywords: | Cc: |
Description
Here's some code I came across that isn't working as it should, at least isn't working as I think it should work.
Global $Array[5] = ["AA", "BB", "CC", "DD", "EE"] For $I = -1 To $Array ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $I = ' & $I & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console Next Global $Array[5][2] = [["AA", "1"], ["BB", 2], ["CC", 3], ["DD", 4],["EE", 5]] For $I = 10 To $Array ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $I = ' & $I & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console Next
The output from the code above, when run from SciTE, is this.
@@ Debug(7) : $I = -1
Error code: 0
@@ Debug(7) : $I = BB
Error code: 0
@@ Debug(7) : $I = CC
Error code: 0
@@ Debug(7) : $I = DD
Error code: 0
@@ Debug(7) : $I = EE
Error code: 0
@@ Debug(11) : $I = 10
Error code: 0
@@ Debug(11) : $I = 10
Error code: 0
@@ Debug(11) : $I = 10
Error code: 0
@@ Debug(11) : $I = 10
Error code: 0
@@ Debug(11) : $I = 10
The first value of $I is correct, it starts at whatever the For loop starts at, but then the For/Next loop starts acting like a For/In/Next loop. On a 2D array, the second section of code, it just loops for however many elements there are in the array, and the initial value of $I doesn't change.
I would have expected this to either error out, because it's referencing an array instead of a number, or run once because there's no end number to reach.
I have tested this code on 3.3.8.1, 3.3.6.1, and 3.3.9.5 and they all run the same way.
I don't think this should be working the way it is and appears to be a bug.
Attachments (0)
Change History (6)
comment:1 Changed 12 years ago by trancexx
comment:2 Changed 11 years ago by Jon
- Resolution set to Rejected
- Status changed from new to closed
comment:3 Changed 11 years ago by Jpm
I think the script must error as $array as no valid type conversion
comment:4 Changed 3 years ago by Jpm
- Resolution Rejected deleted
- Status changed from closed to reopened
comment:5 Changed 3 years ago by Jpm
- Owner set to Jpm
- Status changed from reopened to assigned
For invalid parameter (cannot be incremented) will produce a Fatal error
Even similar expression such $var = $array + 1 will produce a Fatal error.
Fix sent to Jon
comment:6 Changed 10 months ago by Jpm
- Owner changed from Jpm to Jon
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.
Yes, it's a bug. The code isn't performing necessary type conversion. The fix is trivial.
Thanks for reporting.