Kann mein Array nicht füllen

Bella_Isy

Erfahrenes Mitglied
Hallo!

Mein Problem:
Ich habe 3 Functionen
  1. ArrayHin: Fügt Eintrage ein
  2. ArrayEntf: Entfernt entsprechenden Eintrag
  3. ArrayKon: gibt alle vorhanden einträge im Array aus
geschrieben. Die ich in einem seperaten Modul gespeichert habe. Wenn ich es ausführe bekomme ich zur Laufzeit die Fehlermeldung:
An unhandled exception of type 'System.NullReferenceException' occurred in AssistentXpert2.exe

Additional information: Object reference not set to an instance of an obje

Was habe ich falsch gemacht

Mein Code:
Code:
Module Seperat
    'Array mit 2 Dimensionen
    Public FArray(100, 1) As String

    Public Function ArrayHin(ByVal FName As String, ByVal FTyp As String) As String
        Dim x, y As Integer
        'x = Zeilen; pro Zeile ein feld
        x = 0
        'y = Spalte; spalte 0 Name der Variable und 1 Typ des feldes
        y = 0
        'Füllen des Arrays
        Do
            If Seperat.FArray(x, y) = "" Then
                Seperat.FArray(x, y) = FName
                Seperat.FArray(x, y + 1) = FTyp
                FName = ""
                FTyp = ""
            Else
                x = x + 1
                y = 0
            End If
        Loop While FName <> "" And FTyp <> ""
    End Function

    Public Function ArrayEntf(ByVal FName As String) As String
        Dim x As Integer
        If FName = "" Then
            MsgBox("Es wurde kein Name des Feldes übergeben", MsgBoxStyle.Exclamation, "Felhlermeldung 8")
        End If
        x = Seperat.FArray.IndexOf(Seperat.FArray, FName)
        Seperat.FArray.Clear(FArray, x, 2)
    End Function

    'Zu kontrolle ob das Array gefüllt worden ist
    Public Function ArrayKon() As String
        Dim i, an, en As Integer
        For i = an To en
            MsgBox("Name: " & Seperat.FArray(i, 0) & "Typ: " & Seperat.FArray(i, 1))
        Next
    End Function

End Module
 
Eine NullReferenceException hab ich zwar nicht bekommen, was du allerdings auch nicht machen kannst: IndexOf funktioniert nur bei eindimensionalen Arrays, ergo bei deinem Array nicht.

Du kannst aber die Funktion ArrayEntf ein wenig umschreiben, in etwa so:
Code:
Public Function ArrayEntf(ByVal FName As String) As String
        Dim x As Integer
        If FName = "" Then
            MsgBox("Es wurde kein Name des Feldes übergeben", MsgBoxStyle.Exclamation, "Felhlermeldung 8")
        End If


        Dim col As System.Collections.IEnumerator
        col = Seperat.FArray.GetEnumerator()
        x = -1
        While (col.MoveNext())
            Dim muh As String
            x = x + 1
            muh = col.Current
            If (muh = FName) Then
                Seperat.FArray.Clear(FArray, x, 2)
            End If
            Console.WriteLine(muh)
        End While
        
    End Function
Damit gewinnst du zwar keinen Schönheitsbewerb, sollte aber funktionieren.
 

Neue Beiträge

Zurück