Ordner ermitteln mit vb 2015

  • VB.NET
  • .NET (FX) 4.0

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Ordner ermitteln mit vb 2015

    Hallo und guten Tag
    Ich versuche verzweifelt einen Ordnerpfad über eine Variable und nicht über "feste" Eingabe zu ermitteln
    Damit versuche ich es :

    VB.NET-Quellcode

    1. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    2. Dim var1 As String
    3. Dim var2 As String
    4. Dim var3 As String
    5. Dim var4 As String
    6. Dim var5 As String
    7. ' Dim delPfad As String = LigaFilterBS_TypRow.Pfad
    8. 'Dim st() As String = delpfad.Split(CChar("\"))
    9. Dim st() As String = "H:\Bundesliga\Saison2015_2016\Freiburg".Split(CChar("\"))
    10. var1 = st(0) ' das Laufwerk
    11. var2 = st(1) ' erster Ordner
    12. var3 = st(2) ' zweiter Ordner
    13. var4 = st(3) ' dritter Ordner
    14. var5 = st(0) & " \ " & st(1) & " \ " & st(2) & " \ " & st(3)
    15. MessageBox.Show("Laufwerk = " & var1 & vbCrLf & "erster Ordner = " & var2 & vbCrLf & "zweiter Ordner =" & var3 & vbCrLf & "dritter Ordner = " & var4 & vbCrLf & "Ziel = " & var5)
    16. ' Dim di As DirectoryInfo = New DirectoryInfo(var5)
    17. Dim di As DirectoryInfo = New DirectoryInfo("H:\Bundesliga\Saison2015_2016\Freiburg")
    18. If di.Exists Then
    19. MessageBox.Show(var5 & " Ordner vorhanden")
    20. Else
    21. MessageBox.Show("Ordner nicht vorhanden")
    22. End If
    23. MessageBox.Show(var5)
    24. ' di.Delete(True)
    25. End Sub

    so funktioniert es
    Wenn ich aber die drei auskommentierten Dim Zeilen "scharf" mache und dafür die anderen drei auskommentiere kommt immer die Messagebox Ordner nicht vorhanden
    Was mache ich falsch

    trebron57
    Um einen Pfad zu erzeugen, nutze IO.Path.Combine().
    Gib allen Variablen, Controls, et cetera, aussagekräftige Namen und laß den ollen Microsoft.VisualBasic Namespace weg, das ist ein Überbleibsel aus VB-Classic Zeiten.
    z.B. anstatt vbNewLine, System.Environment.NewLine (Ich habe hier System.Environment importiert).

    VB.NET-Quellcode

    1. Imports System.IO
    2. Imports System.Environment
    3. Public Class Form1
    4. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    5. Dim str As String = "H:\Bundesliga\Saison2015_2016\Freiburg"
    6. Dim strPath, strText As String
    7. Dim strSplitted() As String = str.Split(CChar("\"))
    8. strPath = Path.Combine(strSplitted(0), strSplitted(1), strSplitted(2), strSplitted(3))
    9. strText = "Laufwerk = " & strSplitted(0) & NewLine & "erster Ordner = " & strSplitted(1) & NewLine & "zweiter Ordner =" & strSplitted(2) & NewLine & "dritter Ordner = " & strSplitted(3) & NewLine & "Ziel = " & strPath
    10. MessageBox.Show(strText)
    11. Dim di As DirectoryInfo = New DirectoryInfo(strPath)
    12. If di.Exists Then
    13. MessageBox.Show(di.FullName & " Ordner vorhanden")
    14. Else
    15. MessageBox.Show("Ordner nicht vorhanden")
    16. End If
    17. End Sub
    18. End Class
    Vielen Dank für deine Antwort
    In Zeile 8 unterstreicht der Complier strSplitted(2), strSplitted(3)) in blauen Wellen und meldet als Fehler:

    Fehler 1 Zu viele Argumente für "Public Shared Function Combine(path1 As String, path2 As String) As String".
    @trebron57 Pfade und Unterpfade werden nicht über Split(..) ermittelt, sondern über DirectoryInfo und deren Property Parent, so etwa:

    VB.NET-Quellcode

    1. Dim path = "H:\Bundesliga\Saison2015_2016\Freiburg\"
    2. Dim di = New IO.DirectoryInfo(path)
    3. Do While di.Parent.ToString <> ""
    4. Me.ListBox1.Items.Add(di.Parent)
    5. di = di.Parent
    6. Loop
    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!