Support Statement: Dealing with multi-dimensional Arrays

 

In some VB6 codes, two-dimensional arrays are referenced as array(1)(1), which is not the same as array(1,1).


VB6 has some limitations on array declarations, and sometimes an array must be declared as an 1D array even though the intent is 2D.  In those situations, the tool needs to be told the symbol is a 2D array with a fixtype command:

<Compile>
...
<Refactor>
<FixType identifier="I" type="T[,]" />
</Refactor>
</Compile>

where I is the fully-qualified symbol identifier and T is the desired type.  
In other cases the array elements are arrays.  This results in A(...)(...) and there is a lot of ambiguity given the nuances of default properties, parameterized properties, etc.  It's a similar situation; you must add a fixtype:

 

<FixType identifier="I" type="T[][]" />

 

The tool actually supports a much richer declarative syntax that VB6, so I guess you can address it with a pre-edit as well, but the fixtype is a more resilient and more readable technique.