Füllen von CheckedListBox/ComboBox über eine externe Datei (.sql oder .txt) um eine/oder mehre Ausgabedateien zu erstellen!

  • VB.NET

Es gibt 46 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Füllen von CheckedListBox/ComboBox über eine externe Datei (.sql oder .txt) um eine/oder mehre Ausgabedateien zu erstellen!

    Hallo allerseits,

    Einmal vorweg, ich habe die Suchfunktion des Forums/Google genutzt jedoch nichts passendes zum Thema gefunden.

    Was ich wisse/können möchte:




    • Eine CheckedListBox mit einer .txt oder .sql Datei befüllen.
    • Eine ComboBox (im DropDownList-Style) mit einer .txt oder .sql Datei befüllen.
    • Die Auswahl aus den jeweiligen Elementen (es sind ja mehre versiedene Kombinationen möglich) in zwei verschieden Dateien zu schreiben.



    Hier ist der Code, den ich berreits angelegt habe:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Public Class Form1
    2. Dim Modelnummer As String = "MN"
    3. Dim KiesCode As String = "KC"
    4. Dim CSC As String = "CSC"
    5. Dim T9DB As String = "T9DB"
    6. Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    7. My.Computer.FileSystem.CreateDirectory _("C:\Programme\CSC-Creator\Solution")
    8. Dim file As System.IO.FileStreamfile = System.IO.File.Create("C:\Programme\CSC-Creator\Solution\test.txt")
    9. My.Computer.FileSystem.WriteAllText("C:\Programme\CSC-Creator\Solution\test.txt", _"This is new text to be added.", True)
    10. My.Computer.FileSystem.CopyFile( _"C:\Programme\CSC-Creator\Data\testFile.txt", _
    11. "C:\Programme\CSC-Creator\Solution\testFile.txt", _FileIO.UIOption.AllDialogs, _
    12. FileIO.UICancelOption.DoNothing)
    13. MsgBox("The >>Solution<< directory was successfully created with the content.", MsgBoxStyle.Critical)
    14. End Sub
    15. Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
    16. If My.Computer.FileSystem.DirectoryExists(My.Application.Info.DirectoryPath.ToString & "\Solution") Then
    17. TryMy.Computer.FileSystem.DeleteDirectory(My.Application.Info.DirectoryPath.ToString & "Solution", FileIO.DeleteDirectoryOption.DeleteAllContents)
    18. MsgBox("Cleaning was successful.", MsgBoxStyle.Information)
    19. Catch ex As ExceptionMsgBox("Cleanign wasn't successful", MsgBoxStyle.Information)
    20. End Try
    21. ElseMsgBox("There is no directory to clean.", MsgBoxStyle.Information)
    22. End If
    23. End Sub
    24. Private Sub ComboBox1_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
    25. End Sub
    26. Private Sub ComboBox2_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles ComboBox2.SelectedIndexChanged
    27. End Sub
    28. Private Sub ComboBox3_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles ComboBox3.SelectedIndexChanged
    29. End Sub
    30. Private Sub CheckedListBox1_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles CheckedListBox1.SelectedIndexChanged
    31. End SubPrivate Sub Button3_Click(sender As System.Object, e As System.EventArgs) Handles Button3.Click
    32. End Sub
    33. End Class

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „IluminatHALO04“ ()

    Hier mal der Plan:

    Mit IO.File.ReadAllText die entsprechende Dateien einlesen, dann mit Split nach NewLine Splitten, da ja die Items sich bestimmt immer in einer Zeile befinden, dann den so erhaltenen Array mit einer Schleife durchlaufen und die ComboBox, oder Whatever befüllen.


    VB.NET-Quellcode

    1. Dim _temp As String = IO.File.ReadAllText("pfad")
    2. Dim arrSplit As String() = _temp.Split(New String() {vbCr & vbLf, vbLf}, StringSplitOptions.None)
    3. For i = 0 To arrSplit.Length -1
    4. 'Combobox1.Items.Add(arrSplit(i))
    5. Next
    vb-paradise.de/board/boarddisk…zen-was-ist-damit-gemeint
    So is das ja nicht lesbar, also bitte nochma richtig formatieren.

    Lesen einer Datei:
    msdn.microsoft.com/de-de/libra…io.file.readalllines.aspx
    daan msdn.microsoft.com/de-de/library/system.array.aspx

    außerdem: msdn.microsoft.com/de-de/libra…onment.getfolderpath.aspx
    mit den Hard-Codet-Pfad is das ja unmöglich.
    dann ordentliches zusammensetzen des Pfades: msdn.microsoft.com/de-de/library/system.io.path.combine.aspx
    Wenn du das ordentlich formatiert hast, kann man dir sicherlich besser weiterhelfen.
    @ ThuCommix

    Nein, die sind getrennt => Nur ein eintrag pro Zeile

    /Edit
    Ich habe mich zu endschuldigen. Ich habe nicht alles gesagt, es sind; drei ComboBox(en), eine CheckedListBox und drei Buttons

    (1. zum einlesen der Dateien [wenn möglich] 2. zum erstellen der Dateien 3. um die erstellten Ordner & Dateien zu löschen!

    Die aus zu lesenden Dateien sind nur als "Darstellung" für die Boxen zu hand-haben, da die wirklich zu schreibenden Inhalte variabel sind und zu lang sind um angezeigt zu werden.

    @ AliveDevil

    Das mit dem Code-posten tut mur aufrichtig leid. Ich versuche es besser zu machen (dauert halt etwas).

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „IluminatHALO04“ () aus folgendem Grund: Vervollständigung im eigenen Interesse.

    @ Vorposter

    ich habe getan wie mir geheißen aber es rührt sich nichts.

    HELP!
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Public Class Form1
    2. Dim Modelnummer As String = "MN"
    3. Dim KiesCode As String = "KC"
    4. Dim CSC As String = "CSC"
    5. Dim T9DB As String = "T9DB"
    6. Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    7. My.Computer.FileSystem.CreateDirectory _
    8. ("C:\Program Files\CSC-Creator\Solution")
    9. Dim file As System.IO.FileStream
    10. file = System.IO.File.Create("C:\Program Files\CSC-Creator\Solution\test.txt")
    11. My.Computer.FileSystem.WriteAllText("C:\Program Files\CSC-Creator\Solution\test.txt", _
    12. "This is new text to be added.", True)
    13. My.Computer.FileSystem.CopyFile( _
    14. "C:\Program Files\CSC-Creator\Data\testFile.txt", _
    15. "C:\Program Files\CSC-Creator\Solution\testFile.txt", _
    16. FileIO.UIOption.AllDialogs, _
    17. FileIO.UICancelOption.DoNothing)
    18. MsgBox("The >>Solution<< directory was successfully created with the content.", MsgBoxStyle.Critical)
    19. End Sub
    20. Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
    21. If My.Computer.FileSystem.DirectoryExists(My.Application.Info.DirectoryPath.ToString & "\Solution") Then
    22. Try
    23. My.Computer.FileSystem.DeleteDirectory(My.Application.Info.DirectoryPath.ToString & "Solution", FileIO.DeleteDirectoryOption.DeleteAllContents)
    24. MsgBox("Cleaning was successful.", MsgBoxStyle.Information)
    25. Catch ex As Exception
    26. MsgBox("Cleanign wasn't successful", MsgBoxStyle.Information)
    27. End Try
    28. Else
    29. MsgBox("There is no directory to clean.", MsgBoxStyle.Information)
    30. End If
    31. End Sub
    32. Private Sub ComboBox1_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
    33. Dim _temp As String = IO.File.ReadAllText("C:\Program Files\CSC-Creator\Data\device.txt")
    34. Dim arrSplit As String() = _temp.Split(New String() {vbCr & vbLf, vbLf}, StringSplitOptions.None)
    35. For i = 0 To arrSplit.Length - 1
    36. ComboBox1.Items.Add(arrSplit(i))
    37. Next
    38. End Sub
    39. Private Sub ComboBox2_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles ComboBox2.SelectedIndexChanged
    40. End Sub
    41. Private Sub ComboBox3_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles ComboBox3.SelectedIndexChanged
    42. End Sub
    43. Private Sub CheckedListBox1_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles CheckedListBox1.SelectedIndexChanged
    44. End Sub
    45. Private Sub Button3_Click(sender As System.Object, e As System.EventArgs) Handles Button3.Click
    46. End Sub
    47. End Class

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

    VB.NET-Quellcode

    1. ComboBox.Items.AddRange(System.IO.File.ReadAllLines(Path.Combine(Environment.CurrentDirectory, "ordner1", "ordner2", "datei.erweiterung")))

    @ThuCommix: vbLf vbCr vbCrLf funktioniert nicht, da man ja direkt ReadAllLines machen kann. Also: unnötig.
    Dann die ForEach-Schleife: ebenfalls nicht brauchbar, siehe mein Code.
    Was verstehst du denn daran nicht?

    Path.Combine(Environment.CurrentDirectory, "ordner1", "ordner2", "datei.erweiterung")

    Damit Kombiniert man pfade, also z.B


    VB.NET-Quellcode

    1. Path.Combine(Environment.CurrentDirectory, "Files", "Meine Dateien", "info.txt")

    CurrentDirecotry\Files\Meine Dateien\info.txt

    ReadAllLines gibt einen Array zurück, und AddRange fügt den Array zur Combobox hinzu. Also nicht anders als mein Code, nur kürzer.

    VB.NET-Quellcode

    1. Imports System.IO


    Dann wäre da noch der Code, den ich angepasst habe und bei welchem er mich immer an motzt:

    VB.NET-Quellcode

    1. Private Sub ComboBox1_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
    2. ComboBox1.Items.AddRange(System.IO.File.ReadAllLines(Path.Combine(Environment.CurrentDirectory, "Data", "device.txt")))
    3. End Sub


    Ich habe leider zu wenig Ahnung von den verschiedenen Versionen aber sollte es relevant sein hier noch die Info: Es muss mit net Framework 3.0 verwirklichbar sein!
    kannst du nix für - if FW3.0 akzeptiert Path.Combine nur 2 Argumente. Um 3 Elemente zu combinen muß mans also 2 mal aufrufen

    VB.NET-Quellcode

    1. dim fullName=Path.Combine(Environment.CurrentDirectory, "Data")
    2. fullName=Path.Combine(fullName, "device.txt")
    3. ComboBox1.Items.AddRange(System.IO.File.ReadAllLines(fullName))


    @AliveDevil: ha! Fehler schon selbst gesehen! :D
    Ich kommer mir gerade ziehmlich blöde vor, weil:

    Ich nicht sehe was ich falsch mache (aber seis drumm).
    Ich nicht sehe wie mir der letzte oben vom netten Super-Mod weiter hilft bei den Problemen (ich denke es liegt wirklich an mir nicht an Ihnen.)



    VB.NET-Quellcode

    1. Public Class Form1
    2. Dim Modelnummer As String = "MN"
    3. Dim KiesCode As String = "KC"
    4. Dim CSC As String = "CSC"
    5. Dim T9DB As String = "T9DB"
    6. Dim fullName = Path.Combine(Environment.CurrentDirectory, "Data")

    VB.NET-Quellcode

    1. Private Sub ComboBox1_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
    2. fullName = Path.Combine(fullName, "device.txt")
    3. ComboBox1.Items.AddRange(System.IO.File.ReadAllLines(fullName))
    4. End Sub
    Erst mal ein großes DANKE dafür das ihr einem armen Tropf wie mir bei seiner Lösung helft!

    wenn ich an der Stelle:

    VB.NET-Quellcode

    1. Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    2. fullName = Path.Combine(fullName, "device.txt")
    3. ComboBox1.Items.AddRange(System.IO.File.ReadAllLines(fullName))
    4. fullName = Path.Combine(fullName, "device2.txt")
    5. ComboBox2.Items.AddRange(System.IO.File.ReadAllLines(fullName))
    6. fullName = Path.Combine(fullName, "device3.txt")
    7. ComboBox3.Items.AddRange(System.IO.File.ReadAllLines(fullName))
    8. End Sub

    so um ändere... geht das dann? (mit dem Anzeigen von anderen Inhalten in anderen Comboboxen?)