初始化结构

时间:2013-09-25 15:12:21

标签: vb.net structure

Public Enum eSourceMode
    AUS = 0 
    EIN = 1 
End Enum


Public Structure tSourceChannel

    Dim OnOff() As eSourceMode
    Dim chan_nr As Short 

End Structure

我正在尝试将值设置为

        For i = gSources.GetLowerBound(0) To gSources.GetUpperBound(0) Step 1
        gSources(i).chan_nr = i
        'gSources is 0 based ?
        If gSources.GetLowerBound(0) = 0 Then
            k = i + 1
        Else
            k = i
        End If

        Dim hehe As Integer = gSources.Count

        For j = gNoiseBands.GetLowerBound(0) To gNoiseBands.GetUpperBound(0) Step 1
            'ab 17.1.2012: gNrSources sets nr of available outputs
            If k <= gNrSources Then
                gSources(i).OnOff(j) = eSourceMode.EIN
            Else
                gSources(i).OnOff(j) = eSourceMode.AUS
            End If
        Next j
    Next i

结果是例外

  

发生了System.NullReferenceException

对象引用未设置为对象的实例。

我需要这个,因为我有.ini文件和这些值:

"gSources0",1,0,1,1,1,1,1
"gSources1",1,1,1,1,1,1,1
"gSources2",1,1,1,1,1,1,1
"gSources3",1,1,1,1,1,1,1

结果应该是一个例子:

 gSources(0).OnOff(0) = 1 , gSources(0).OnOff(1) = 0

1 个答案:

答案 0 :(得分:0)

在此声明OnOff是一个数组

Dim OnOff() As eSourceMode

但是你永远不会定义数组应该有多大或者为数组分配内存。

'...
Dim hehe As Integer = gSources.Count
'Specify array size
Redim gSources(i).OnOff(gNoiseBands.GetUpperBound(0) -  gNoiseBands.GetLowerBound(0))
For j = gNoiseBands.GetLowerBound(0) To gNoiseBands.GetUpperBound(0) Step 1
    '...
Next j