Modify

Opened 12 years ago

Last modified 9 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

Yes, it's a bug. The code isn't performing necessary type conversion. The fix is trivial.
Thanks for reporting.

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 2 years ago by Jpm

  • Resolution Rejected deleted
  • Status changed from closed to reopened

comment:5 Changed 2 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 9 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.

Add Comment

Modify Ticket

Action
as assigned The owner will remain Jon.
Author


E-mail address and user name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.