Ragged arrays in Visual Basic 6.0
Ragged arrays in Visual Basic 6.0
(OP)
Hello, I am currently writing an imaging program which will be used to count the number of objects (and their component pixels) within an image. My method of doing this is to have a variant array which stores the objects, I then have a second variant array within this first one relating to the pixel number, and a third to store the x and y coordinates. For example, the first x coordinate of the first element (pixel) of the first object will be;
Object(0)(0)(0) = 45
The object array is working correctly, but when I come to adding more elements within the first object array I have a syntax error and I can't understand why? For a pixel which is connected south-east on another pixel the code is:
If NorthWestPixel > 0 Then
c = 0 'x coord
d = 1 'y coord
For a = LBound(Object) To UBound(Object)
For b = LBound(Object(a)) To UBound(Object(a))
If Object(a)(b)(c) = nCol -1 And _
object(a)(b)(d) = nRow -1 Then
ReDim Preserve Object(a)(ubound(object(a))+1)
End If
Next b
Next a
End If
The Redim Preserve code just is not liked, does anyone have any suggestions?
Object(0)(0)(0) = 45
The object array is working correctly, but when I come to adding more elements within the first object array I have a syntax error and I can't understand why? For a pixel which is connected south-east on another pixel the code is:
If NorthWestPixel > 0 Then
c = 0 'x coord
d = 1 'y coord
For a = LBound(Object) To UBound(Object)
For b = LBound(Object(a)) To UBound(Object(a))
If Object(a)(b)(c) = nCol -1 And _
object(a)(b)(d) = nRow -1 Then
ReDim Preserve Object(a)(ubound(object(a))+1)
End If
Next b
Next a
End If
The Redim Preserve code just is not liked, does anyone have any suggestions?
RE: Ragged arrays in Visual Basic 6.0
Option Explicit
Option Base 1
Public Type PixelData
PixelNo As Long
Xpos As Double
Ypos As Double
End Type
Public ThisPixel() As PixelData
Sub Example()
Dim i As Integer
Dim sTmp As String
ReDim ThisPixel(1)
For i = 1 To 5
ReDim Preserve ThisPixel(i)
ThisPixel(i).PixelNo = i
ThisPixel(i).Xpos = 45
ThisPixel(i).Ypos = 105
Next i
For i = LBound(ThisPixel) To UBound(ThisPixel)
sTmp = sTmp & ThisPixel(i).PixelNo & vbTab & _
ThisPixel(i).Xpos & vbTab & _
ThisPixel(i).Ypos & vbCrLf
Next i
MsgBox sTmp
ReDim ThisPixel(1)
End Sub
DimensionalSolutions@Core.com
While I welcome e-mail messages, please post all thread activity in these forums for the benefit of all members.