Quinch Posted November 16, 2006 Posted November 16, 2006 Let's say, not so hypothetically, that I want to open a dozen files, each with its handle, and later in the script dump stuff into them. So, not very theoretically, instead of manually defining each file, I'd try to do this;For $sortnumber = 1 to 12 $"sort"&$sortnumber = FileOpen("G:\NR_Lists\Department"&$sortnumber&".txt", 2) NextOf course, it doesn't work - the program pops up a message about a badly formatted variable or macro. So my question is, is there a way to make something that basically does "take something and something, and create/refer-to a variable name from it"?TIA, Quinch
Outshynd Posted November 16, 2006 Posted November 16, 2006 Dim $arr[13] For $sortnumber = 1 to 12 $arr[$sortnumber] = FileOpen("G:\NR_Lists\Department"&$sortnumber&".txt", 2) Next Something like that. I'm really tired and arrays aren't my specialty when it comes to AutoIt, but it might work.
Quinch Posted November 16, 2006 Author Posted November 16, 2006 Thanks, that seems to work {I'll probably revisit this topic later, but let's hope not}. Another question, though, why the need to define the array as one value higher than the number of values inputted into it?
Helge Posted November 16, 2006 Posted November 16, 2006 Arrays starts from 0, so if you got a 5-element array it then ends at 4 (0,1,2,3,4).
Blue_Drache Posted November 16, 2006 Posted November 16, 2006 (edited) Hmm...why not put an opt("ArrayStartNumber", option) in where option can equal 1 or 0? Default can equal 0 so it doesn't bork existing scripts.Quote ripped from the VBA Excel help file.Option Base StatementUsed at the module level to declare the default lower bound for array subscripts.Syntax Option Base {0 | 1}Remarks Because the default base is 0, the Option Base statement is never required. If used, the must appear in a module before any procedures. Option Base can appear only once in a module and must precede array declarations that include dimensions. Note The To clause in the Dim, Private, Public, ReDim, and Static statements provides a more flexible way to control the range of an array's subscripts. However, if you don't explicitly set the lower bound with a To clause, you can use Option Base to change the default lower bound to 1. The base of an array created with the the ParamArray keyword is zero; Option Base does not affect ParamArray (or the Array function, when qualified with the name of its type library, for example VBA.Array). The Option Base statement only affects the lower bound of arrays in the module where the statement is located. Edited November 16, 2006 by Blue_Drache Lofting the cyberwinds on teknoleather wings, I am...The Blue Drache
Valik Posted November 16, 2006 Posted November 16, 2006 Hmm...why not put an opt("ArrayStartNumber", option) in where option can equal 1 or 0? Default can equal 0 so it doesn't bork existing scripts.Just... no. First, asking for an Opt() is bad. Second, in this case it's doubly bad. Arrays are 0-based, period. No wishy-washy, "oh, let's let users choose because we developer's are too dumb to make a decision". They are 0-based, like it or not.
Blue_Drache Posted November 16, 2006 Posted November 16, 2006 Just... no. First, asking for an Opt() is bad. Second, in this case it's doubly bad. Arrays are 0-based, period. No wishy-washy, "oh, let's let users choose because we developer's are too dumb to make a decision". They are 0-based, like it or not.LOL. I take it this isn't the first time it's come up then. Lofting the cyberwinds on teknoleather wings, I am...The Blue Drache
Valik Posted November 16, 2006 Posted November 16, 2006 No, it's just Opt() in general shows poor design on our part that we can't make a final decision about how the language should behave. Decisions need to be made and stuck to.
Outshynd Posted November 17, 2006 Posted November 17, 2006 Thanks, that seems to work {I'll probably revisit this topic later, but let's hope not}. Another question, though, why the need to define the array as one value higher than the number of values inputted into it?Then... Dim $arr[12] For $sortnumber = 1 to 12 $arr[$sortnumber - 1] = FileOpen("G:\NR_Lists\Department"&$sortnumber&".txt", 2) Next or Dim $arr[12] For $sortnumber = 0 to 11 $arr[$sortnumber] = FileOpen("G:\NR_Lists\Department"&$sortnumber+1&".txt", 2) Next
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now