System.ArgumentException - Was ist falsch?

  • VB.NET

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von slice.

    System.ArgumentException - Was ist falsch?

    Ich habe das aktuelle Visual Studio auf meinem neuen Laptop installiert und dabei gleichzeitig auf die aktuelle Version 2017 geupdatet. Nun lässt sich eines meiner Programme nicht mehr kompilieren.
    Auf dem alten Laptop hatte ich Win7 verwendet und nun Win10.
    Es wird diese Fehlermeldung angezeigt: System.ArgumentException: "Der Pfad hat ein ungültiges Format."
    Eine Hardcopy habe ich angehängt.
    Was braucht ihr noch an Informationen, damit ihr mir helfen könnt.

    Quellcode

    1. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    2. Dim test_a As Byte
    3. Dim test_b As Byte
    4. Dim test_c As Byte
    5. FolderBrowserDialog1.SelectedPath = My.Settings.Pfad_KE5FX
    6. Dim fileb() As String = IO.Directory.GetFiles(FolderBrowserDialog1.SelectedPath, "query.exe", IO.SearchOption.AllDirectories)
    7. If fileb.Length = 0 Then
    8. Label_query.Text = "query.exe nicht gefunden FEHLER"
    9. Label_query.BackColor = Color.Red
    10. test_a = 0
    11. ElseIf fileb.Length = 1 Then
    12. Pfad_query = fileb(0)
    13. Label_query.Text = fileb(0)
    14. Label_query.BackColor = Color.GreenYellow
    15. test_a = 1
    16. My.Settings.Pfad_KE5FX = FolderBrowserDialog1.SelectedPath
    17. ElseIf fileb.Length > 1 Then
    18. Label_query.Text = "query.exe mehrfach vorhanden FEHLER"
    19. Label_query.BackColor = Color.Red
    20. test_a = 0
    21. End If
    22. ...
    23. ...
    24. ...
    25. ...

    Bilder
    • Fehler.png

      129,13 kB, 1.920×1.042, 144 mal angesehen

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

    Moin,

    Grund dürfte sein, dass auf deinem neuen Laptop die Settings, die du ja ausliest, schlicht nicht gesetzt sind.
    Von daher die Frage: Was hantierst du mit einem Folder Browser Dialog rum, wenn du ihn nie dem Benutzer anzeigst?
    Ggf wäre es gut : a) zu prüfen ob das setting gesetzt ist, wenn nicht den Dialog anzeigen (!) und den Wert übernehmen. b) ansonsten den Dialog rauswerfen. Bringt ja nix, wenn der Benutzer nix eingeben kann.

    Gruß Zakath
    Der Debugger ist doch da sehr eindeutig und untermauert Zakaths Aussage: Unten links steht ja: FolderBowserDialog1.SelectedPath = ""
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Kurzfristig ist das ne Lösung. Mittelfristig ist es wahrscheinlich hilfreicher das Problem zu finden und zu lösen. Haben Probleme halt so an sich: Böse verstecken und dann plötzlich zu schlagen.
    Wenn du da keine Hand mehr dran legen willst kannst du genau jetzt aufhören zu lesen.

    Wenn nicht: Was ist die Aufgabe eines FolderBrowserDialogs? Richtig, den Benutzer einen Ordner auswählen lassen. Dafür muss der den aber überhaupt mal gezeigt bekommen! Du weißt dem ausgewählten Pfad den Wert aus den settings zu... Aber wozu? Sieht doch eh niemand! Wie ist der workflow den du im Kopf hast? Ich hätte wild vermutet: Beim ersten Start muss der Benutzer einem Pfad wählen. Den speicherst du und benutzt ihn beim nächsten Start gleich weiter. Wird in dem Pfad nix gefunden, dann muss der User wieder ran und den Pfad korrigieren. Stimmt das so?

    Gruß
    >>>>>> Wie ist der workflow den du im Kopf hast?
    So hatte ich es bei der letzten funktionierenden Version umgesetzt:
    Wenn der Button bedrückt wird, wird ein "Ordner suchen" Dialog geöffnet. Siehe Bild "Bild03"
    Wenn der richtige Ordner gewählt worden ist und in dem Ordner die gesuchten Dateien (externe Programme die aufgerufen werden sollen) gefunden worden sind, verfärbt sich ein Hinweisfeld grün und in verschiedenen Dialogen werden einige Buttons freigegeben.
    Bilder
    • bild03.png

      288,31 kB, 1.602×926, 141 mal angesehen
    • bild04.png

      268,54 kB, 1.588×929, 126 mal angesehen

    egon schrieb:

    Wenn der Button bedrückt wird, wird ein "Ordner suchen" Dialog geöffnet.
    widerspricht aber dem Code aus Post#1:

    VB.NET-Quellcode

    1. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    2. Dim test_a As Byte
    3. Dim test_b As Byte
    4. Dim test_c As Byte
    5. FolderBrowserDialog1.SelectedPath = My.Settings.Pfad_KE5FX
    6. Dim fileb() As String = IO.Directory.GetFiles(FolderBrowserDialog1.SelectedPath, "query.exe", IO.SearchOption.AllDirectories)

    Da wird das Formular geladen und die Property FolderBrowserDialog1.SelectedPath als Parkplatz für den Wert aus My.Settings.Pfad_KE5FX missbraucht. Da kommt noch kein Button in irgendeiner Form zum Zuge. Solltest Du es bei diesem Form_Load-Code belassen, kannst Du ja auch gleich

    VB.NET-Quellcode

    1. Dim fileb() As String = IO.Directory.GetFiles(My.Settings.Pfad_KE5FX, "query.exe", IO.SearchOption.AllDirectories)
    verwenden. Musst eben (auch dann) sicherstellen, dass in My.Settings.Pfad_KE5FX was Sinnvolles drinsteht.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    @egon Vielleicht gibst Du vor dem Befehl GetFiles() einfach mal den dort verwendeten Pfad in in einer MessageBox aus und überzeugst Dich, dasser stimmt.
    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!