NullreferenceException bei einer Methode

  • VB.NET

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

    NullreferenceException bei einer Methode

    Hallo
    Ich weis der Titel des Threads ist nicht gut gewählt,aber wusste nicht wie ich es sonst beschreiben soll.
    Grade hab ich en kleines Problem mit ner Methode die en Array zurückgibt,dieser Array wird dann von ner anderen Methode gespeichert.
    Hier mal der Code:
    Die Methode liefert den zu speichernden Array

    VB.NET-Quellcode

    1. Private Shared AppInitkey As String = "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows"
    2. Private Shared AppInitList() As String
    3. Public Shared Function getAppInit_DLLs() As String()
    4. Dim DLLs As String
    5. Dim regkey As RegistryKey = Registry.LocalMachine.OpenSubKey(AppInitkey)
    6. DLLs = regkey.GetValue("AppInit_DLLs").ToString
    7. If DLLs = String.Empty Then
    8. Return AppInitList
    9. Exit Function
    10. Else
    11. Return AppInitList
    12. End If
    13. End Function


    Nun hab ich mir ne Methode geschrieben die en Array in ne Textdatei geschrieben,da , IO.File.WriteAllLines mir die Textdatei immer überschreibt

    VB.NET-Quellcode

    1. Public Shared Sub ArraySave(ByVal Filepath As String, ByVal content() As String, Optional ByVal Firstrun As Boolean = False)
    2. If Firstrun = True Then
    3. If IO.File.Exists(Filepath) Then
    4. IO.File.Delete(Filepath)
    5. Dim sw As IO.StreamWriter = New StreamWriter(Filepath, True, System.Text.Encoding.Default)
    6. For i As Integer = 0 To content.Length - 1
    7. sw.WriteLine(content(i))
    8. Next
    9. sw.Flush()
    10. sw.Close()
    11. End If
    12. Else
    13. Dim sw As IO.StreamWriter = New StreamWriter(Filepath, True, System.Text.Encoding.Default)
    14. If content.Length = Nothing Then 'Hier tritt die Exception auf
    15. sw.Close()
    16. Exit Sub
    17. Else
    18. For i As Integer = 0 To content.Length - 1
    19. sw.WriteLine(content(i))
    20. Next
    21. sw.Flush()
    22. sw.Close()
    23. End If
    24. End If
    25. End Sub


    Hier wird die ArraySave Methode aufgerufen:

    VB.NET-Quellcode

    1. Private Sub btn_scan_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btn_scan.Click
    2. ArraySave("C:\SScript\SScript.log", LSP.get_LSP)
    3. ArraySave("C:\SScript\SScript.log", ActiveX.getDpf)
    4. StringSave("C:\SScript\SScript.log", DNS.get_Nameserver)
    5. ArraySave("C:\SScript\SScript.log", Protocol.getProtocol)
    6. ArraySave("C:\SScript\SScript.log", AppInit_DLLS.getAppInit_DLLs)
    7. End Sub

    Der Fehler tritt beim Aufrufen von ArraySave von AppInit_DLLS auf,da bei mir der AppInit schlüssel nichts enthält.Also in ArraySave in Zeile 15 nur wüsste ich nicht wie ich die Exception "behandeln " soll.Hat da jemand ne Idee
    Ich weis ja wo der Fehler liegt,der Array hat keinen Inhalt= ist Nothing ,weil der AppInit Wert in der Registry eben leer ist und das ist von Pc zu Pc ja unterschiedlich.Die Methode ArraySave für AppInit wird ja aufjedenfall aufgerufen und ich will eben in der ArraySave Methode checken ob der Array Nothing ist damit nicht später in der Methode wieder ne Exception auftritt.
    @Edr Guter Ansatz danke :)

    @Sgt. Space Danke für den Tipp ich guck erstmal,nach dem Ansatz von Edr und dann komm ich auf deine Methode zurück.

    Edit://Irgendwie muss ich Gestern nicht gespeichert haben,denn der wichtige Teil des codes Fehlt irgendwie,das erklärt auch den Fehler^^
    Danke an beide nochmal :)