NullReferenceException beim speichern eines Objektes im Array/List(of Object)/Dictionary(of string, Object)

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von Goldwing Studios.

    NullReferenceException beim speichern eines Objektes im Array/List(of Object)/Dictionary(of string, Object)

    Guten Morgen,

    ich verzweifle schon bei mehreren Projekten am selben Problem:

    Beim Versuch mehrere Objekte in fortlaufender Reihenfolge zu speichern komme ich immer auf eine NullRefereceException.

    Mein Ziel ist es, etwas von einer Textdatei zu lesen, in Objekte zu stecken und geordnet zu speichern.
    Hier der Code:

    Quellcode

    1. Private Function getCats() As Dictionary(Of String, Kategorie) 'Cats steht für Categories
    2. Dim cats As Dictionary(Of String, Kategorie) = Nothing
    3. Dim read As System.IO.StreamReader
    4. read = My.Computer.FileSystem.OpenTextFileReader("d:\Users\Lukmi\Desktop\vb test\categories.txt")
    5. Dim c As Integer = 0 'counter
    6. Dim line As List(Of String())
    7. Dim data(1) As String
    8. While Not read.EndOfStream
    9. line.Add(Split(read.ReadLine(), " ; "))
    10. c += 1
    11. End While
    12. '...


    Wie man lesen kann, sollen die einzelnen Objekte von Zeilenumbrüchen und die Daten der Objekte mit " ; " abgegrenzt werden.
    Ich hab es bereits mit Array und Dictionary probiert, doch da kommt der selbe Fehler: siehe Anhang


    Über Hilfe würde ich mich freuen,

    Gruß lukmi
    Bilder
    • vbParObjInArr.JPG

      66,06 kB, 1.253×250, 130 mal angesehen
    • vbParObjInArr.JPG

      66,06 kB, 1.253×250, 122 mal angesehen
    Danke, das hat geholfen. :)

    Für die Nachwelt, wie der Code jetzt aussieht (Die Lösung war ein New vor der List(of String)):

    VB.NET-Quellcode

    1. Private Function getCats() As Dictionary(Of String, Kategorie)
    2. Dim cats As Dictionary(Of String, Kategorie) = Nothing
    3. Dim read As System.IO.StreamReader
    4. read = My.Computer.FileSystem.OpenTextFileReader("d:\Users\Lukmi\Desktop\vb test\categories.txt")
    5. Dim c As Integer = 0 'counter
    6. Dim line As New List(Of String()) 'Das New hier
    7. Dim data(1) As String
    8. While Not read.EndOfStream
    9. line.Add(Split(read.ReadLine(), " ; "))
    10. c += 1
    11. End While
    12. '...
    Sehr schön.

    Nichts gegen dich, aber bitte gewöhne dir als Anfänger direkt an Google als deinen besten Freund anzusehen und benutze das billige Stück von nun an zu erst für deine frageähnlichen Ergüsse.

    !Dann! kannst wieder hier reinschauen und dir Hilfe holen :) (Aber erst dann!)
    jo, googeln schön und gut, aber es gibt auch noch andere Recherche-Möglichkeiten: VisualStudio richtig nutzen

    Ich zb google recht selten, weil ich meine Info direkt aus meinem Entwicklungssystem hole. Das hat nämlich eine geniale Referenz-Dokumentation eingebaut, also Referenz! - die Infos sind verlässlich.
    Bei Google kann man ja an alle möglichen Hurgler geraten, oder auch einfach an Infos über die falsche Version und so Zeug.

    Aber ich will google nicht schlecht machen, man soll nur die anderen Sachen auch kennen, und deren Stärken, dann kennt man auch Googles Stärken, und weiß was wann die effizientere Recherche-Methode ist.
    ZB googeln tu ich erst, wenn das, was ich aufgrund von ObjectBrowser-Informationen zurechtbastel, trotzdem nicht funzt.



    Themawechsel: @TE: Deine Methode ist noch immer reichlich verbesserungsbedürftig.
    Wenn du sie mal komplett postest kann ich die dir mal überarbeiten. Daraus kannst du vlt. einige Punkte an State of Art für dich herausziehen.