NULL Fehler

  • VB.NET

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von Zim.

    NULL Fehler

    Hey hab da nen komisches Problem...

    VB.NET-Quellcode

    1. Sub Suche_Registrienummern()
    2. If dir.Exists(My.Application.Info.DirectoryPath & "\Registriernummer") Then
    3. Dim dir As New IO.DirectoryInfo(My.Application.Info.DirectoryPath & "\Registriernummer\")
    4. Dim TempSort() As String
    5. Dim i As Integer = 0
    6. For Each file As IO.FileInfo In dir.GetFiles
    7. TempSort(i) = file.Name
    8. i = i + 1
    9. Next
    10. Array.Sort(TempSort)
    11. For i = 0 To TempSort.Count - 1
    12. Form1.ComboBox0.Items.Add(TempSort(i))
    13. Next
    14. End If
    15. End Sub


    Er meint immer : System.NullReferenceException

    ... Was will der da von mir der Wert ist definitief nicht NULL
    hab schon lange nix mehr in vb gemacht aber selbst da musst du doch die größe eines arrays angeben und du greifst auf einen index zu der meiner meinung nach nicht deklariert wurde. Wenn du nicht weiß wie groß es werden soll nimm ne list


    Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.
    Korrekt.
    ReadAllLines() dimensioniert das Feld.
    Du tust dies mit

    VB.NET-Quellcode

    1. Dim TempSort() As String
    jedoch nicht.
    List(Of String) wäre da genau das richtige.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Dann müsste ich doch auch erst alle Zählen können und dann das Array mit der Anzahl erstellen können. Also so:

    VB.NET-Quellcode

    1. Sub Suche_Registrienummern()
    2. If dir.Exists(My.Application.Info.DirectoryPath & "\Registriernummer") Then
    3. Dim anz As Integer
    4. Dim dir As New IO.DirectoryInfo(My.Application.Info.DirectoryPath & "\Registriernummer\")
    5. 'Dim TempSort() As String
    6. Dim i As Integer = 0
    7. For Each file As IO.FileInfo In dir.GetFiles
    8. anz = anz + 1
    9. Next
    10. Dim TempSort(anz) As String
    11. For Each file As IO.FileInfo In dir.GetFiles
    12. TempSort(i) = file.Name
    13. i = i + 1
    14. Next
    15. Array.Sort(TempSort)
    16. For i = 0 To TempSort.Count - 1
    17. Form1.ComboBox0.Items.Add(TempSort(i))
    18. Next
    19. End If
    20. End Sub
    Dann müsstest Du es nur noch so machen:

    VB.NET-Quellcode

    1. Sub Suche_Registrienummern()
    2. If New IO.DirectoryInfo(My.Application.Info.DirectoryPath & "\Registriernummer").Exists Then
    3. Dim dir As New IO.DirectoryInfo(My.Application.Info.DirectoryPath & "\Registriernummer\")
    4. Dim TempSort As New List(Of String)
    5. For Each file As IO.FileInfo In dir.GetFiles
    6. TempSort.Add(file.FullName)
    7. Next
    8. TempSort.Sort()
    9. For i = 0 To TempSort.Count - 1
    10. ComboBox0.Items.Add(TempSort(i))
    11. Next
    12. End If
    13. End Sub
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!