2017-10-11 1 views
0

Mein Projekt ist es, ein Array von Datensätzen vordefiniert zu haben und dann in einer Listbox in der High School mit der folgenden Syntax syntaxt here ausgeben, aber es gibt den Fehler "System.Exception: 'Late-gebunden Die Zuweisung zu einem Feld vom Werttyp "Kontakt" ist nicht gültig, wenn "Kontakt" das Ergebnis eines spät gebundenen Ausdrucks ist. "Probleme mit Array von Datensätzen haben

Ich habe viele Problemlösungen ausprobiert und kann das Problem nicht finden - wahrscheinlich etwas wirklich einfaches. Ich würde jede Hilfe schätzen, die Sie Jungs anbieten können.

Public Class Form1

'Dim addressbook(8, 2) As String 
'Dim number As i 

Structure Contact 

    Dim Forename As String 
    Dim Surname As String 
    Dim address As String 

End Structure 

Dim addressbook(8) As Contact 

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click 

    setuprecords(addressbook) 
    displayoutput(addressbook) 

End Sub 
Sub setuprecords(ByRef addressbook) 

    'For row = 0 To 8 
    ' For column = 0 To 2 
    ' If column = 0 Then 
    ' addressbook(row, column) = InputBox("What is your name ") 
    ' ElseIf column = 1 Then 
    ' addressbook(row, column) = InputBox("What is your 2nd name") 
    ' ElseIf column = 2 Then 
    ' addressbook(row, column) = InputBox("What is your address") 
    ' End If 
    ' Next 
    'Next 


    addressbook(0).Forename = "Bart" 
    addressbook(0).Surname = "Simpson" 
    addressbook(0).address = "Springfeild" 

    addressbook(1).Forename = "Lisa" 
    addressbook(1).Surname = "Simpson" 
    addressbook(1).address = "Springfeild" 

    addressbook(2).Forename = "Homer" 
    addressbook(2).Surname = "Simpson" 
    addressbook(2).address = "Springfeild" 

    addressbook(3).Forename = "Marge" 
    addressbook(3).Surname = "Simpson" 
    addressbook(3).address = "Springfeild" 

    addressbook(4).Forename = "Santa's Little Helper" 
    addressbook(4).Surname = "Simpson" 
    addressbook(4).address = "Springfeild" 

    addressbook(5).Forename = "Magie" 
    addressbook(5).Surname = "Simpson" 
    addressbook(5).address = "Springfeild" 

    addressbook(6).Forename = "Milhouse" 
    addressbook(6).Surname = "Something" 
    addressbook(6).address = "Springfeild" 

    addressbook(7).Forename = "Ned" 
    addressbook(7).Surname = "Flanders" 
    addressbook(7).address = "Springfeild" 

    addressbook(8).Forename = "Willie" 
    addressbook(8).Surname = "Something" 
    addressbook(8).address = "Springfeild" 

End Sub 
Sub displayoutput(ByVal addressbook) 
    'If number = 0 Then 
    ' For row = 0 To 8 
    ' ListBox1.Items.Add(addressbook(row, 0) & vbTab & (addressbook(row, 1) & vbTab & (addressbook(row, 2)))) 
    ' Next 
    'Else 
    ' ' ListBox1.Items.Add(addressbook(number - 1 & vbTab & column)) 
    ' ListBox1.Items.Add(addressbook(number - 1, 0) & vbTab & (addressbook(number - 1, 1) & vbTab & (addressbook(number - 1, 2)))) 
    'End If 
    For row = 0 To 8 
     ListBox1.Items.Add(addressbook(row).Forename) 
     ListBox1.Items.Add(addressbook(row).Surname) 
     ListBox1.Items.Add(addressbook(row).address) 
    Next 
End Sub 

End Class

Antwort

0

ändern setuprecords zu

Sub setuprecords(ByRef addressbook As Contact()) 

Es war zwar nur ByRef addressbook, es wurde säumigen Object einzugeben.

Setzen Sie Option Strict On als erste Zeile in Ihrem Code und es wird Sie benachrichtigen, wenn Sie vergessen, einen erforderlichen Typ anzugeben.

Sie werden sehen, dass

Sub displayoutput(ByVal addressbook) 

muss auch die gleiche Aufmerksamkeit.

+0

Vielen Dank djv! Das hat mein Problem sofort gelöst. Mein Lehrer hat uns das nie beigebracht –