VB.net problem med array och klass

Permalänk
Medlem

VB.net problem med array och klass

Jag är van med VB6, och där kunde man skriva så här:

array1(1) = "text"

men i vb.net funkar det inte så bra. Vad ska jag göra?
Felet blir när man försöker lägga in datan i variabeln openFileArray().

Här är koden.

Public Class anmdat Public anm() As String Public datum() As String End Class Public Class oFileArr Public lpnr As String Public invnr As String Public brand As String Public modell As String Public serial As String Public placering As String Public anm As anmdat End Class Public oFile As String Public openFileArray() As oFileArr Private Sub OpenFileDialog1_FileOk(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles OpenFileDialog1.FileOk 'Dim openFileArray() As oFileArr oFile = OpenFileDialog1.FileName Dim tmplp As Int32 Dim sstreamReader As StreamReader = New StreamReader(oFile) Dim line As String Do line = sstreamReader.ReadLine() Dim LineArray() As String = Split(line, ":", 2, CompareMethod.Binary) Dim SubLineArray() As String = Split(LineArray(UBound(LineArray)), ",", 2, CompareMethod.Binary) tmplp = CInt(Microsoft.VisualBasic.Left(LineArray(UBound(LineArray)), 1)) Select Case tmplp Case 1 openFileArray(tmplp).lpnr = CStr(tmplp) Case 2 openFileArray(tmplp).invnr = SubLineArray(UBound(SubLineArray)) Case 3 openFileArray(tmplp).brand = SubLineArray(UBound(SubLineArray)) Case 4 openFileArray(tmplp).modell = SubLineArray(UBound(SubLineArray)) Case 5 openFileArray(tmplp).serial = SubLineArray(UBound(SubLineArray)) Case 6 openFileArray(tmplp).placering = SubLineArray(UBound(SubLineArray)) Case 7 Dim UnderSubLineArray() As String = Split(SubLineArray(UBound(SubLineArray)), ";", , CompareMethod.Binary) Array.Copy(UnderSubLineArray, openFileArray(tmplp).anm.anm, UBound(UnderSubLineArray)) Case 8 Dim UnderSubLineArray() As String = Split(SubLineArray(UBound(SubLineArray)), ";", , CompareMethod.Binary) Array.Copy(UnderSubLineArray, openFileArray(tmplp).anm.datum, UBound(UnderSubLineArray)) End Select 'MsgBox(LineArray(LBound(LineArray))) Loop Until line Is Nothing sstreamReader.Close() End Sub

edit: Felkoden är denna

System.NullReferenceException was unhandled by user code Message="Object reference not set to an instance of an object." Source="serviceprogram" StackTrace: at WindowsApplication1.Form1.OpenFileDialog1_FileOk(Object sender, CancelEventArgs e) in D:\Tims\Programmering\.net\serviceprogram\serviceprogram\Form1.Designer.vb:line 408 at System.Windows.Forms.FileDialog.OnFileOk(CancelEventArgs e) at System.Windows.Forms.FileDialog.DoFileOk(IntPtr lpOFN) at System.Windows.Forms.FileDialog.HookProc(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

Edit2: en sak till, hur gör man en array i designmode på t.ex. en checkbox? i vb6 var det bara att kopiera och klistra in så frågade den om man vill göra array av den.

Visa signatur

tack o bock

Permalänk
Medlem

Du måste instansiera varje objekt av oFileArr, samt definiera längden på din array så att du inte får "out of limits".

Visa signatur

| Zepto Znote 4200 | Centrino 1.6 GHz | 512 MB | ATI 9700 | Ubuntu | WinXP Pro | ICQ# 54811730
"Förmågan att idag tänka annorlunda än igår skiljer den vise från den envise." --John Steinbeck
"Self improvement is mastrubation" --T.D.

Permalänk
Medlem

Edit... tog bort... jag fixade det

Visa signatur

tack o bock