Ссылка на объект не установлена ​​для экземпляра объекта с классом с массивом классов в качестве члена - PullRequest
0 голосов
/ 06 августа 2010

Вот структура, которая у меня есть:

Friend Class StandardFormatFile
    Friend fileType As String
    Friend numberOfSeries As Integer
    Friend standardSeriesData As New ArrayList

End Class

Friend Class StandardFormatFileSeries

    Friend standardNumOfElements As Integer
    Friend standardSeriesName As String
    Friend standardDataElements As New ArrayList

End Class

Friend Class StandardFormatFileElement
    Friend standardX_TimeValue As Single
    Friend standardY_SampleValue As Single

End Class

Теперь вот код, реализующий его:

   ReDim Preserve firstFile.standardSeriesData(firstFile.numberOfSeries - 1)

    For i As Integer = 0 To firstFile.numberOfSeries - 1
        Try

            firstFile.standardSeriesData(i).standardSeriesName = GetSeriesName(file1BReader)
            secondFile.standardSeriesData(i).standardNumOfElements = GetSeriesName(file2BReader)

            ReDim Preserve firstFile.standardSeriesData(i).standardDataElements(firstFile.standardSeriesData(i).standardNumOfElements)

            For j As Integer = 0 To firstFile.standardSeriesData(i).standardNumOfElements - 1
                firstFile.standardSeriesData(i).standardDataElements(j).standardX_TimeValue = file1BReader.ReadSingle
                firstFile.standardSeriesData(i).standardDataElements(j).standardY_SampleValue = file1BReader.ReadSingle

                secondFile.standardSeriesData(i).standardDataElements(j).standardX_TimeValue = file2BReader.ReadSingle
                secondFile.standardSeriesData(i).standardDataElements(j).standardY_SampleValue = file2BReader.ReadSingle
            Next

        Catch ex As Exception
            MsgBox(ex.Message & " *** i = " & i)
        End Try

    Next

Я не знаю, почему я получаю ошибку, я получаю ошибку. Я ReDim'ing ... разве это не должно работать? Я пробовал Arraylists и List (объекта), и это не работает правильно.

помогите ... застряли!

Ответы [ 3 ]

1 голос
/ 06 августа 2010

Это массив, не переделывайте, просто добавьте.

Плюс

Вы должны обязательно использовать дженерики

Friend Class StandardFormatFile
    Friend fileType As String
    Friend numberOfSeries As Integer
    Friend standardSeriesData As New List(of StandardFormatFileSeries)

End Class

Friend Class StandardFormatFileSeries

    Friend standardNumOfElements As Integer
    Friend standardSeriesName As String
    Friend standardDataElements As New List(of StandardFormatFileElement)

End Class

Friend Class StandardFormatFileElement
    Friend standardX_TimeValue As Single
    Friend standardY_SampleValue As Single

End Class

И снова, это структура данных, котораясодержится в объекте, а не в массиве.Так что используйте add вместо redim.

Cheers!

1 голос
/ 06 августа 2010

Разве ваша первая строка не будет Redimming до -1, поскольку firstFile.numberOfSeries будет равно 0?

0 голосов
/ 06 августа 2010

Хорошо, так что я понял это ... такой ход новичка.Я не знаю, почему я не мог понять это один.Я был на правильном пути ... у меня просто пукнул мозг:

 For i As Integer = 0 To firstFile.numberOfSeries - 1

        Dim tempSeriesData1 As New StandardFormatFileSeries
        Dim tempSeriesData2 As New StandardFormatFileSeries

        tempSeriesData1.standardNumOfElements = file1BReader.ReadInt32
        tempSeriesData1.standardSeriesName = GetSeriesName(file1BReader)

        tempSeriesData2.standardNumOfElements = file2BReader.ReadInt32
        tempSeriesData2.standardSeriesName = GetSeriesName(file2BReader)


        For j As Integer = 0 To tempSeriesData1.standardNumOfElements - 1
            Dim tempElementData1 As New StandardFormatFileElement
            Dim tempElementData2 As New StandardFormatFileElement

            tempElementData1.standardX_TimeValue = file1BReader.ReadSingle
            tempElementData1.standardY_SampleValue = file1BReader.ReadSingle
            tempElementData2.standardX_TimeValue = file2BReader.ReadSingle
            tempElementData2.standardY_SampleValue = file2BReader.ReadSingle

            tempSeriesData1.standardDataElements.Add(tempElementData1)
            tempSeriesData2.standardDataElements.Add(tempElementData2)


        Next

        firstFile.standardSeriesData.Add(tempSeriesData1)
        secondFile.standardSeriesData.Add(tempSeriesData2)


    Next
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...