[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
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
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?
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?
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?