Results 1 to 5 of 5

Thread: [2008] running arrays from structures

  1. #1

    Thread Starter
    Member
    Join Date
    Jun 2008
    Posts
    42

    [2008] running arrays from structures

    Hi, i am currently running a program that will allow me to save all data on the form to open and edit at will. It uses a structure of 8 arrays, each with 16 values to save the information.

    When i try to save the text into the array, it tells me that its a bad record length and crashes.

    Here is the code:

    Code:
        Public Structure save_weekly
            <VBFixedString(8)> Public dates() As String
            <VBFixedString(30)> Public description() As String
            Public FaD() As Double 'food and drink
            Public ToE() As Double 'toys and equiptment
            Public HaL() As Double 'heating and lighting
            Public WrCt() As Double 'water rates/council tax
            Public TrO() As Double 'travel and outings
            Public Misc() As Double 'miscellaneous
        End Structure
    That is the structure itself
    just to warn you, this next bits a bit bulky, i couldnt work out how to loop the textbox names (if you can find a way, that would be great!)

    Code:
      Dim saveweekly As New save_weekly
            Dim month As Integer
            Dim week As Integer
            Dim filename As String
            Dim x As Integer = 1
    
            month = MonthCalendar1.SelectionRange.Start.Month
            week = My.Settings.currentweek - 1
            filename = "f" & month.ToString & week.ToString
    
            saveweekly.dates = New String(14) {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
            saveweekly.description = New String(14) {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
            saveweekly.FaD = New Double(14) {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
            saveweekly.ToE = New Double(14) {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
            saveweekly.HaL = New Double(14) {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
            saveweekly.WrCt = New Double(14) {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
            saveweekly.TrO = New Double(14) {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
            saveweekly.Misc = New Double(14) {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
    
            saveweekly.dates.SetValue(TextBox2.Text, 0)
            saveweekly.dates.SetValue(TextBox3.Text, 1)
            saveweekly.dates.SetValue(TextBox4.Text, 2)
            saveweekly.dates.SetValue(TextBox5.Text, 3)
            saveweekly.dates.SetValue(TextBox6.Text, 4)
            saveweekly.dates.SetValue(TextBox7.Text, 5)
            saveweekly.dates.SetValue(TextBox8.Text, 6)
            saveweekly.dates.SetValue(TextBox9.Text, 7)
            saveweekly.dates.SetValue(TextBox10.Text, 8)
            saveweekly.dates.SetValue(TextBox11.Text, 9)
            saveweekly.dates.SetValue(TextBox12.Text, 10)
            saveweekly.dates.SetValue(TextBox13.Text, 11)
            saveweekly.dates.SetValue(TextBox14.Text, 12)
            saveweekly.dates.SetValue(TextBox15.Text, 13)
    
            saveweekly.description.SetValue(D1.Text, 0)
            saveweekly.description.SetValue(D2.Text, 1)
            saveweekly.description.SetValue(D3.Text, 2)
            saveweekly.description.SetValue(D4.Text, 3)
            saveweekly.description.SetValue(D5.Text, 4)
            saveweekly.description.SetValue(D6.Text, 5)
            saveweekly.description.SetValue(D7.Text, 6)
            saveweekly.description.SetValue(D8.Text, 7)
            saveweekly.description.SetValue(D9.Text, 8)
            saveweekly.description.SetValue(D10.Text, 9)
            saveweekly.description.SetValue(D11.Text, 10)
            saveweekly.description.SetValue(D12.Text, 11)
            saveweekly.description.SetValue(D13.Text, 12)
            saveweekly.description.SetValue(D14.Text, 13)
    
            saveweekly.FaD.SetValue(Val(Fd1.Text), 0)
            saveweekly.FaD.SetValue(Val(Fd2.Text), 1)
            saveweekly.FaD.SetValue(Val(Fd3.Text), 2)
            saveweekly.FaD.SetValue(Val(Fd4.Text), 3)
            saveweekly.FaD.SetValue(Val(Fd5.Text), 4)
            saveweekly.FaD.SetValue(Val(Fd6.Text), 5)
            saveweekly.FaD.SetValue(Val(Fd7.Text), 6)
            saveweekly.FaD.SetValue(Val(Fd8.Text), 7)
            saveweekly.FaD.SetValue(Val(Fd9.Text), 8)
            saveweekly.FaD.SetValue(Val(Fd10.Text), 9)
            saveweekly.FaD.SetValue(Val(Fd11.Text), 10)
            saveweekly.FaD.SetValue(Val(Fd12.Text), 11)
            saveweekly.FaD.SetValue(Val(Fd13.Text), 12)
            saveweekly.FaD.SetValue(Val(Fd14.Text), 13)
    
            saveweekly.ToE.SetValue(Val(te1.Text), 0)
            saveweekly.ToE.SetValue(Val(te2.Text), 1)
            saveweekly.ToE.SetValue(Val(te3.Text), 2)
            saveweekly.ToE.SetValue(Val(te4.Text), 3)
            saveweekly.ToE.SetValue(Val(te5.Text), 4)
            saveweekly.ToE.SetValue(Val(te6.Text), 5)
            saveweekly.ToE.SetValue(Val(te7.Text), 6)
            saveweekly.ToE.SetValue(Val(te8.Text), 7)
            saveweekly.ToE.SetValue(Val(te9.Text), 8)
            saveweekly.ToE.SetValue(Val(Te10.Text), 9)
            saveweekly.ToE.SetValue(Val(Te11.Text), 10)
            saveweekly.ToE.SetValue(Val(Te12.Text), 11)
            saveweekly.ToE.SetValue(Val(Te13.Text), 12)
            saveweekly.ToE.SetValue(Val(Te14.Text), 13)
    
            saveweekly.HaL.SetValue(Val(hl1.Text), 0)
            saveweekly.HaL.SetValue(Val(hl2.Text), 1)
            saveweekly.HaL.SetValue(Val(hl3.Text), 2)
            saveweekly.HaL.SetValue(Val(hl4.Text), 3)
            saveweekly.HaL.SetValue(Val(hl5.Text), 4)
            saveweekly.HaL.SetValue(Val(hl6.Text), 5)
            saveweekly.HaL.SetValue(Val(hl7.Text), 6)
            saveweekly.HaL.SetValue(Val(hl8.Text), 7)
            saveweekly.HaL.SetValue(Val(hl9.Text), 8)
            saveweekly.HaL.SetValue(Val(hl10.Text), 9)
            saveweekly.HaL.SetValue(Val(hl11.Text), 10)
            saveweekly.HaL.SetValue(Val(hl12.Text), 11)
            saveweekly.HaL.SetValue(Val(hl13.Text), 12)
            saveweekly.HaL.SetValue(Val(hl14.Text), 13)
    
            saveweekly.WrCt.SetValue(Val(wc1.Text), 1)
            saveweekly.WrCt.SetValue(Val(wc2.Text), 2)
            saveweekly.WrCt.SetValue(Val(wc3.Text), 3)
            saveweekly.WrCt.SetValue(Val(wc4.Text), 4)
            saveweekly.WrCt.SetValue(Val(wc5.Text), 5)
            saveweekly.WrCt.SetValue(Val(wc6.Text), 6)
            saveweekly.WrCt.SetValue(Val(wc7.Text), 7)
            saveweekly.WrCt.SetValue(Val(wc8.Text), 8)
            saveweekly.WrCt.SetValue(Val(wc9.Text), 9)
            saveweekly.WrCt.SetValue(Val(wc10.Text), 10)
            saveweekly.WrCt.SetValue(Val(wc11.Text), 11)
            saveweekly.WrCt.SetValue(Val(wc12.Text), 12)
            saveweekly.WrCt.SetValue(Val(wc13.Text), 13)
            saveweekly.WrCt.SetValue(Val(wc14.Text), 14)
    
            saveweekly.TrO.SetValue(Val(to1.Text), 0)
            saveweekly.TrO.SetValue(Val(to2.Text), 1)
            saveweekly.TrO.SetValue(Val(to1.Text), 2)
            saveweekly.TrO.SetValue(Val(to1.Text), 3)
            saveweekly.TrO.SetValue(Val(to1.Text), 4)
            saveweekly.TrO.SetValue(Val(to1.Text), 5)
            saveweekly.TrO.SetValue(Val(to1.Text), 6)
            saveweekly.TrO.SetValue(Val(to1.Text), 7)
            saveweekly.TrO.SetValue(Val(to1.Text), 8)
            saveweekly.TrO.SetValue(Val(to1.Text), 9)
            saveweekly.TrO.SetValue(Val(to1.Text), 10)
            saveweekly.TrO.SetValue(Val(to1.Text), 11)
            saveweekly.TrO.SetValue(Val(to1.Text), 12)
            saveweekly.TrO.SetValue(Val(to1.Text), 13)
    
            saveweekly.Misc.SetValue(Val(m1.Text), 0)
            saveweekly.Misc.SetValue(Val(m2.Text), 1)
            saveweekly.Misc.SetValue(Val(m3.Text), 2)
            saveweekly.Misc.SetValue(Val(m4.Text), 3)
            saveweekly.Misc.SetValue(Val(m5.Text), 4)
            saveweekly.Misc.SetValue(Val(m6.Text), 5)
            saveweekly.Misc.SetValue(Val(m7.Text), 6)
            saveweekly.Misc.SetValue(Val(m8.Text), 7)
            saveweekly.Misc.SetValue(Val(m9.Text), 8)
            saveweekly.Misc.SetValue(Val(m10.Text), 9)
            saveweekly.Misc.SetValue(Val(m11.Text), 10)
            saveweekly.Misc.SetValue(Val(m12.Text), 11)
            saveweekly.Misc.SetValue(Val(m13.Text), 12)
            saveweekly.Misc.SetValue(Val(m14.Text), 13)
    
    
            FileOpen(1, filename, OpenMode.Random, OpenAccess.Write, OpenShare.Shared, Len(saveweekly))
            FilePut(1, saveweekly)
            FileClose(1)
    If anyone can tell me how to declare the length of the array in the structure to stop this, that will be a great help

    Thanks

    Ryy
    currently studying on a VB course as well as part time self teaching C#

  2. #2
    PowerPoster Deepak Sakpal's Avatar
    Join Date
    Mar 2002
    Location
    Mumbai, India
    Posts
    2,424

    Re: [2008] running arrays from structures

    You can use constructor to initialize the size of array variables.

    Code:
    Public Structure save_weekly
        <VBFixedString(8)> Public dates() As String
        <VBFixedString(30)> Public description() As String
    
        Public FaD() As Double 'food and drink
        Public ToE() As Double 'toys and equiptment
        Public HaL() As Double 'heating and lighting
        Public WrCt() As Double 'water rates/council tax
        Public TrO() As Double 'travel and outings
        Public Misc() As Double 'miscellaneous
    
        Sub New(ByVal arraySize As Integer)
            FaD = New Double(arraySize) {}
        End Sub
    End Structure
    
    Private Sub Button1_Click( _
        ByVal sender As System.Object, _
        ByVal e As System.EventArgs _
    ) Handles Button1.Click
    
        Dim saveweekly As New save_weekly(14)
        For i As Integer = 0 To 14
            saveweekly.FaD(i) = i
        Next
        '
        For i As Integer = 0 To 14
            MessageBox.Show(saveweekly.FaD(i).ToString)
        Next
    End Sub

  3. #3

    Thread Starter
    Member
    Join Date
    Jun 2008
    Posts
    42

    Re: [2008] running arrays from structures

    Code:
            Sub New(ByVal arraySize As Integer)
                arraySize = 15
                FaD = New Double(arraySize) {}
                dates = New String(arraySize) {}
                description = New String(arraySize) {}
                ToE = New Double(arraySize) {}
                HaL = New Double(arraySize) {}
                WrCt = New Double(arraySize) {}
                TrO = New Double(arraySize) {}
                Misc = New Double(arraySize) {}
            End Sub
    Thats what i have but it still comes up with the error 'Bad record length.'

    What else do i need to do?
    currently studying on a VB course as well as part time self teaching C#

  4. #4
    Super Moderator Shaggy Hiker's Avatar
    Join Date
    Aug 2002
    Location
    Idaho
    Posts
    40,106

    Re: [2008] running arrays from structures

    I would assume that the error comes from the fixed length string arrays. Is there a reason why you are using those? They are a fairly rare thing to use. Assuming that you have to use them, have you confirmed that the correct number of characters is being passed to the fixed length strings?
    My usual boring signature: Nothing

  5. #5

    Thread Starter
    Member
    Join Date
    Jun 2008
    Posts
    42

    Re: [2008] running arrays from structures

    oh, i just used them out of habit

    When we covered Structures in my GCSE course we used it so i assumed it was the norm, shall i remove them?
    currently studying on a VB course as well as part time self teaching C#

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  



Click Here to Expand Forum to Full Width