"End If" ---> Der Objektverweis wurde nicht auf eine Objektinstanz gelegt.

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von C8002.

    "End If" ---> Der Objektverweis wurde nicht auf eine Objektinstanz gelegt.

    Hallo!
    Ich benutze folgenden Code, um die *.html -Dateien aus einem entpackten *.zip Ordner rauszufiltern und in eine TreeView einzufügen:

    VB.NET-Quellcode

    1. Private Sub Load_Click(sender As Object, e As EventArgs) Handles Load.Click
    2. Dim fb As New OpenFileDialog
    3. fb.Title = "Choose an eBook"
    4. fb.Filter = "ePUB (.epub)|*.epub*"
    5. If fb.ShowDialog() = DialogResult.OK Then
    6. Dim r As New Random
    7. Dim ID As String = r.Next.ToString
    8. Directory.CreateDirectory(Path.GetTempPath & "/" & ID)
    9. ZipFile.ExtractToDirectory(fb.FileName, Path.GetTempPath & "/" & ID & "/")
    10. Dim Direc As New DirectoryInfo(Path.GetTempPath & "/" & ID & "/")
    11. Dim FileI As FileInfo()
    12. FileI = Direc.GetFiles
    13. For Each i As FileInfo In FileI
    14. If i.Name.Contains(".html") Then
    15. TreeView1.Nodes.Add(fb.SafeFileName.Replace(".epub", ""))
    16. TreeView1.Nodes(0).Nodes.Add(i.Name.Replace(".html", ""))
    17. Document(TreeView1.Nodes.Count + 1) = File.ReadAllText(i.FullName)
    18. End If
    19. Next
    20. End If
    21. End Sub

    Leider erhalte ich den im Titel genannten Fehler, mit einem Verweis auf das "End If", dass vor dem "Next" der For Each-Schleife steht.
    Ich habe bereits gegoogelt, was das sein könnte, bin aber auf nichts ausschlaggebendes gestoßen.

    MfG,
    C8002.
    “If debugging is the process of removing software bugs, then programming must be the process of putting them in.”
    -Unbekannt

    C8002 schrieb:

    VB.NET-Quellcode

    1. Document(TreeView1.Nodes.Count + 1) = File.ReadAllText(i.FullName)
    Wie ganz genau ist Document() deklariert und instanziiert?
    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!
    @RodFromGermany

    VB.NET-Quellcode

    1. Dim Document As String()

    Das währe dann eine globale Variable.
    “If debugging is the process of removing software bugs, then programming must be the process of putting them in.”
    -Unbekannt
    = new String(10)?
    "Life isn't about winning the race. Life is about finishing the race and how many people we can help finish the race." ~Marc Mero

    Nun bin ich also auch soweit: Keine VB-Fragen per PM! Es gibt hier ein Forum, verdammt!
    Jou.

    C8002 schrieb:

    globale Variable
    die zwad deklariert, aber nicht instanziiert ist.
    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!
    @Nikx
    Muss man das limitieren? Ich würde dem Endbenutzer doch gerne so viele Kapitel laden lassen wie er will.
    @RodFromGermany
    Klingt jetzt vielleicht blöd, aber wie macht man das? :/
    “If debugging is the process of removing software bugs, then programming must be the process of putting them in.”
    -Unbekannt
    Dann nimm List (Of String)
    Instanzieren:

    Dim x As String() -> x ist vom Typ String-Array, aber hat keinen Wert
    Dim x As String() = new String() -> x ist vom Typ String-Array und ein neu instanziertes, leeres String-Array

    Grüße
    "Life isn't about winning the race. Life is about finishing the race and how many people we can help finish the race." ~Marc Mero

    Nun bin ich also auch soweit: Keine VB-Fragen per PM! Es gibt hier ein Forum, verdammt!