Fehler im Code bei win 7

  • VB.NET

Es gibt 15 Antworten in diesem Thema. Der letzte Beitrag () ist von Renati.

    Fehler im Code bei win 7

    Hi hallo ich bin der neue :)

    solange bis mein buch kommt zu vb 08 mache ich grade die videos von microsoft um ein wenig zu verstehe was VB kann was für möglichkeiten ich habe

    nun sind das lles videos undsomit ja recht einfach zuverstehen man macht einfach alles nach und sieht dann das ergebnis

    naja bei mir ist das nicht ganz so es geht darum ein explorerclone zu pogrammieren und bin grade dabei das mir im "treeview" angezeigt wird das für festplatten unterordner etc. ich habe
    leider tauscht bei mir immer der unten stehende fehler auf

    Eine Ausnahme (erste Chance) des Typs "System.FormatException" ist in mscorlib.dll aufgetreten.
    Eine Ausnahme (erste Chance) des Typs "System.IO.IOException" ist in mscorlib.dll aufgetreten.
    Eine Ausnahme (erste Chance) des Typs "System.IO.IOException" ist in mscorlib.dll aufgetreten.
    Eine Ausnahme (erste Chance) des Typs "System.IO.IOException" ist in mscorlib.dll aufgetreten.
    Eine Ausnahme (erste Chance) des Typs "System.IO.IOException" ist in mscorlib.dll aufgetreten.
    Eine Ausnahme (erste Chance) des Typs "System.IO.IOException" ist in mscorlib.dll aufgetreten.
    Eine Ausnahme (erste Chance) des Typs "System.IO.IOException" ist in mscorlib.dll aufgetreten.
    Eine Ausnahme (erste Chance) des Typs "System.IO.IOException" ist in mscorlib.dll aufgetreten.
    Eine Ausnahme (erste Chance) des Typs "System.UnauthorizedAccessException" ist in mscorlib.dll aufgetreten.

    nun habe ich gehört das es wohl an win7 liegen kann aber noch keine lösung für mein problem gefunden kann mir wer da weiter helfen ich lege mal den quell code bei und makiere euch dei stellen wo er mir einen gelben fehler anzeigt




    VB.NET-Quellcode

    1. Imports System.IO
    2. Public Class Form1
    3. Private Sub BeendenToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BeendenToolStripMenuItem.Click
    4. Close()
    5. End Sub
    6. Private Sub ToolbarToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolbarToolStripMenuItem.Click
    7. ToolStrip1.Visible = Not ToolStrip1.Visible
    8. ToolbarToolStripMenuItem.Checked = ToolStrip1.Visible
    9. End Sub
    10. Private Sub StatusleisteToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles StatusleisteToolStripMenuItem.Click
    11. StatusStrip1.Visible = Not StatusStrip1.Visible
    12. StatusleisteToolStripMenuItem.Checked = StatusStrip1.Visible
    13. End Sub
    14. Private Sub ToolStripButton3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripButton3.Click
    15. End Sub
    16. Private Sub TreeView1_AfterSelect(ByVal sender As System.Object, ByVal e As System.Windows.Forms.TreeViewEventArgs)
    17. End Sub
    18. Private Sub ListView1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
    19. End Sub
    20. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    21. Dim drives = DriveInfo.GetDrives()
    22. For Each drive As DriveInfo In drives
    23. Dim node = TreeView1.Nodes.Add(drive.Name)
    24. Fillnode(node, drive.RootDirectory)
    25. Next
    26. End Sub
    27. Private Sub Fillnode(ByVal node As TreeNode, ByVal directory As DirectoryInfo)
    28. Dim Directories = directory.GetDirectories()
    29. For Each subdirectory As DirectoryInfo In Directories
    30. node.Nodes.Add(subdirectory.Name)
    31. Next
    32. End Sub
    33. End Class

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „MrLee“ ()

    1. Nächstes mal bitte VB-BBCode nehmen.
    2. Sag doch bitte an welcher Stelle die Fehler auftreten. Beim starten? Im Fehlerfenster unten? Wenn du irgendwo drauf klickst?
    -> Stichwort Try Catch Blöcke
    3. Statt

    VB.NET-Quellcode

    1. Close()

    das hier:

    VB.NET-Quellcode

    1. Me.Close

    4. Hast du alle Videos zu dem Thema zu Ende gesehen? Wenn nein mach das und guck ob der im Video die gleichen Fehler hat(Den Fehler hab ich auch am Anfang gemacht :whistling: ).

    Für den Rest das ganze noch mal ordentlich

    VB.NET-Quellcode

    1. Imports System.IO
    2. Public Class Form1
    3. Private Sub BeendenToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BeendenToolStripMenuItem.Click
    4. Close()
    5. End Sub
    6. Private Sub ToolbarToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolbarToolStripMenuItem.Click
    7. ToolStrip1.Visible = Not ToolStrip1.Visible
    8. ToolbarToolStripMenuItem.Checked = ToolStrip1.Visible
    9. End Sub
    10. Private Sub StatusleisteToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles StatusleisteToolStripMenuItem.Click
    11. StatusStrip1.Visible = Not StatusStrip1.Visible
    12. StatusleisteToolStripMenuItem.Checked = StatusStrip1.Visible
    13. End Sub
    14. Private Sub ToolStripButton3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripButton3.Click
    15. End Sub
    16. Private Sub TreeView1_AfterSelect(ByVal sender As System.Object, ByVal e As System.Windows.Forms.TreeViewEventArgs)
    17. End Sub
    18. Private Sub ListView1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
    19. End Sub
    20. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    21. Dim drives = DriveInfo.GetDrives()
    22. For Each drive As DriveInfo In drives
    23. Dim node = TreeView1.Nodes.Add(drive.Name)
    24. Fillnode(node, drive.RootDirectory)
    25. Next
    26. End Sub
    27. Private Sub Fillnode(ByVal node As TreeNode, ByVal directory As DirectoryInfo)
    28. Dim Directories = directory.GetDirectories()
    29. For Each subdirectory As DirectoryInfo In Directories
    30. node.Nodes.Add(subdirectory.Name)
    31. Next
    32. End Sub
    33. End Class


    Mfg
    Firestorm

    VB.NET-Quellcode

    1. Private Sub Fillnode(ByVal node As TreeNode, ByVal directory As DirectoryInfo)
    2. Dim Directories = directory.GetDirectories()
    3. For Each subdirectory As DirectoryInfo In Directories
    4. node.Nodes.Add(subdirectory.Name)

    das musst du noch mit 'nem try-catch-block abfangen, weil windoof 7 für die systemordner keine berechtigungen erteilt.
    @Firestorm
    Ja videos habe ich bis zum ende geschaut die haben das problem da net

    und was unterscheidet ME.Close von close()??

    er zeigt mir das problem immer dann wen ich es testen will also er führt es erst gar net aus sondern zeigt mir die meldung

    @ lordknoblauch
    was für nen try catch block ? kannst du mir das vielleicht in einem beispiel ezigen damit ich das verstehe was du meinst
    Mach mal nen Doppelklick auf die Fehlermeldungen.
    Sag uns was dann angemarkert wird.

    Außerdem schreibst du das hier:

    VB.NET-Quellcode

    1. Try
    2. 'Hier kommt das von lordknoblauch hin
    3. Catch ex as Exeption 'Kann sein das man exeption anders schreibt
    4. Msg(ex.tostring)
    5. End Try


    Mfg
    Firestorm
    grad gesehen, dass das sogar im ersten post steht
    Eine Ausnahme (erste Chance) des Typs "System.UnauthorizedAccessException" ist in mscorlib.dll aufgetreten.
    also kommt dann wohl sowas
    "Der Zugriff auf den Pfad "..." wurde verweigert."
    Ok habe es jetzt hin bekommen mit dem try aber erzeigt mir immer den fehler an das system.io "das gerät nicht bereit" wär wie kann ich diesen fehler ausschalten?
    Die hilfe hilft mir da net so wirklich... die meint das ich schauen soll ob der vorhandene ordner den ich auslesen will ob der auch wirklich da ist.

    da ich aber ja mein gesamtes system auslesen will weiss ich net wo das problem ist

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Dogo“ ()

    na das problem ist auch der mir der explorer jetzt zwar anzeigt das ich festplatten habe ... und das auf der festplatte ordner befunden aber er zeigt mir keine unterordner in den ordnern an


    VB.NET-Quellcode

    1. Imports System.IO
    2. Public Class Form1
    3. Private Sub BeendenToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BeendenToolStripMenuItem.Click
    4. Close()
    5. End Sub
    6. Private Sub ToolbarToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolbarToolStripMenuItem.Click
    7. ToolStrip1.Visible = Not ToolStrip1.Visible
    8. ToolbarToolStripMenuItem.Checked = ToolStrip1.Visible
    9. End Sub
    10. Private Sub StatusleisteToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles StatusleisteToolStripMenuItem.Click
    11. StatusStrip1.Visible = Not StatusStrip1.Visible
    12. StatusleisteToolStripMenuItem.Checked = StatusStrip1.Visible
    13. End Sub
    14. Private Sub ToolStripButton3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripButton3.Click
    15. End Sub
    16. Private Sub TreeView1_AfterSelect(ByVal sender As System.Object, ByVal e As System.Windows.Forms.TreeViewEventArgs)
    17. End Sub
    18. Private Sub ListView1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
    19. End Sub
    20. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    21. Dim drives = DriveInfo.GetDrives()
    22. For Each drive As DriveInfo In drives
    23. Dim node = TreeView1.Nodes.Add(drive.Name)
    24. Fillnode(node, drive.RootDirectory)
    25. Next
    26. End Sub
    27. try
    28. Private Sub Fillnode(ByVal node As TreeNode, ByVal directory As DirectoryInfo)
    29. Dim Directories = directory.GetDirectories()
    30. For Each subdirectory As DirectoryInfo In Directories
    31. node.Nodes.Add(subdirectory.Name)
    32. catch as exeption
    33. end try
    34. Next
    35. End Sub
    36. End Class


    da wo es rot ist da ich meine vm jetzt zuhabe habe ich es kopiert also wen die schreibweise von try block falshc ist... es funktioniert... aber wie gesagt er sagt mir immer noch geräte wären net bereit und es werden keine unterordner angezeigt
    Du darfst nur die Laufwerke in deiner Liste aufnehmen die auch Ready sind.
    Beispiel:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Laufwerke ermitteln
    2. For Each LW As System.IO.DriveInfo In My.Computer.FileSystem.Drives
    3. If LW.IsReady = False Then
    4. ' ListeLaufwerke.Items.Add("nicht Angemeldet " & info.Name)
    5. Else
    6. CoBo_Laufwerke.Items.Add(LW)
    7. End If
    8. Next LW


    und dann solltest du dir die Rekursion / Rekursive anschauen.
    Das heist in jedem Direktory gibt es auch weitere Direktorys, Das heist er muss immer wieder in die Routine springen bis es keine weiteren Unterverzeichnisse gibt.
    du hast bei deiner Übung nicht den Try Catch Ex Block eingetragen
    Beispiel:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Try
    2. Dim Direktories = directory.GetDirectories()
    3. For Each SubDirektory As DirectoryInfo In Direktories
    4. node.Nodes.Add(SubDirektory.Name)
    5. ' recursive lassen wir weg, dauert beim Starten des Programm zu lange
    6. ' OrdnerLinksLesen(node, SubDirektory)
    7. Next
    8. Catch
    9. End Try


    Das musst du auf deinem Code anpassen.
    Verzeichnisse und Laufwerke die vorher nicht rausgefiltert werden, jedoch auf error laufen, müssen mit Try Catch abgefangen werden.