Schleife & Zeile in Textdatei schreiben

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

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

    Schleife & Zeile in Textdatei schreiben

    Hallo,

    Ich habe eine Tabelle in My.Settings gespeichert. Die Einträge schreibt man in Textboxen.

    Quellcode

    1. My.Settings.Zeit1 = ""
    2. My.Settings.Zeit2 = ""
    3. My.Settings.Zeit3 = ""
    4. My.Settings.Zeit4 = ""
    5. My.Settings.Zeit5 = ""
    6. My.Settings.Zeit6 = ""
    7. My.Settings.Zeit7 = ""
    8. My.Settings.Zeit8 = ""
    9. My.Settings.Zeit9 = ""
    10. My.Settings.Zeit10 = ""
    11. My.Settings.Montag1 = ""
    12. My.Settings.Montag2 = ""
    13. My.Settings.Montag3 = ""
    14. My.Settings.Montag4 = ""
    15. My.Settings.Montag5 = ""
    16. My.Settings.Montag6 = ""
    17. My.Settings.Montag7 = ""
    18. My.Settings.Montag8 = ""
    19. My.Settings.Montag9 = ""
    20. My.Settings.Montag10 = ""


    Wie kann ich diesen Code vereinfachen? (Schleife????)

    2. Ich möchte eine Zeile aus einer Textdatei verändern, wie mache ich das?

    Quellcode

    1. Dim leser As System.IO.StreamReader
    2. leser = My.Computer.FileSystem.OpenTextFileReader(pfad)


    Wie kriege ich eine ausgweählte Zeile? Bzw. wie verändere ich die

    Meine Textdatei sieht so aus:
    0 : Deutsch , 3
    1 : Englisch , 2
    2 : Programmieren , 3
    3 : BSN , 3
    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!

    Dominik1806 schrieb:

    Ich habe eine Tabelle in My.Settings gespeichert.
    siehe dir folgendes an:
    benutzerdefinierte Liste in den Settings speichern
    und dann Post #4 in diesem Thread. Deine Textdatei kannst du dann in die Dictionary einlesen und nachher weiter verwenden...
    @Dominik1806 Hast Du die StringCollection verstanden?
    Mit dem Link von @VB1963 und Umgebung kannst Du die Settings ablegen lassen wo immer Du willst und unter jedem machbaren Format (binär, XML).
    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!
    ja, nur es ist halt direkt in den Settings verfügbar.
    kannste dort einstellen - siehe Rods Bildle.
    Auf diese Weise brauchst du nur ein Setting, und kannst da viele Strings reinpacken wie wolle.

    VB.NET-Quellcode

    1. dim Strings=new stringCollection
    2. Strings.Add(textbox1.Text)
    3. Strings.Add(textbox10.Text)
    4. Strings.Add(textbox11.Text)
    5. Strings.Add(textbox12.Text)
    6. Strings.Add(textbox13.Text)
    7. Strings.Add(textbox14.Text)
    8. My.Settings.Strings=Strings
    Welchen Vorteil habe ich bei der StringCollection? Abgesehen davon das ich dann nur ein Setting habe?

    Ebenfalls muss ich Einträge auch an bestimmten Stellen verändern können wie mache ich das? Weil mit Add wird das ja immer ans Ende gepackt

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

    Dominik1806 schrieb:

    Wie kann ich diesen Code vereinfachen? (Schleife????)
    Außerdem kannst Du auch einzelne Einträge ändern und löschen.
    Lerne, wie man an Informationen kommt:
    • Nutze die Suchen-Funktion im Forum und frag Frau Google.
    • Klicke auf einen Befehl und drücke die Taste F1, es öffnet sich die MSDN.
    • Klicke rechts auf einen Befehl und wähle im Kontextmenu Gehe zu Definition, es öffnet sich der ObjektBrowser.
    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!
    Ok ich benutze jetze eine StringCollection, klappt auch alles ganz gut.

    Wenn ich aber einen Listbox Item auswähle und das löschen will bekomme ich einen Fehler

    Fehler:
    Ein Ausnahmefehler des Typs "System.NullReferenceException" ist in Schulplaner.exe aufgetreten.

    Zusätzliche Informationen: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.

    Der Fehler passiert bei Private Sub ListBox1_SelectedIndexChanged

    Quellcode

    1. Private Sub ListBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ListBox1.SelectedIndexChanged
    2. Dim ausgabe As String
    3. ausgabe = haList.Item(ListBox1.SelectedIndex + 1)
    4. BunifuMaterialTextbox1.Text = ListBox1.SelectedItem.ToString
    5. BunifuMaterialTextbox2.Text = ausgabe.Substring(ausgabe.IndexOf(":") + 1, ausgabe.IndexOf(",") - ausgabe.IndexOf(":") - 1)
    6. BunifuDatepicker1.Value = Convert.ToDateTime(ausgabe.Substring(ausgabe.IndexOf(",") + 1, ausgabe.Length - ausgabe.IndexOf(",") - 1))
    7. End Sub
    8. Private Sub BunifuFlatButton4_Click(sender As Object, e As EventArgs) Handles BunifuFlatButton4.Click
    9. haList.RemoveAt(ListBox1.SelectedIndex + 1)
    10. ListBox1.Items.RemoveAt(ListBox1.SelectedIndex)
    11. End Sub

    Dominik1806 schrieb:

    System.NullReferenceException
    Da solltest Du mal die Variable aufklären, die da Nothing ist. Sieh Dir dazu die Fehlermeldung genauer an oder sieh Dir den Inhalt aller vorkommenden Variavlen an.
    Solch ein Konstrukt produziert diesen Fehler:

    VB.NET-Quellcode

    1. Dim dlg As Form2 ' es fehlt = New Form2
    2. dlg.ShowDialog()

    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!

    Dominik1806 schrieb:

    Habe den Fehler gelöst
    Lässt Du uns an Deiner Lösung teilhaben?
    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!
    Nach dem löschen ist der ListBox1.SelectionIndex -1

    Quellcode

    1. If ListBox1.SelectedIndex >= 0 Then
    2. haList.RemoveAt(ListBox1.SelectedIndex + 1)
    3. ListBox1.Items.RemoveAt(ListBox1.SelectedIndex)
    4. BunifuMaterialTextbox1.Text = ""
    5. BunifuMaterialTextbox2.Text = ""
    6. BunifuDatepicker1.Value = Date.Today
    7. End If


    Mit der If Abfrage fange ich den Fehler ab, also nicht der Rede Wert :D

    @RodFromGermany Übrigens funktioniert dein Link nicht mehr
    ​Ein guter .NET-Snippetkonverter.

    Dominik1806 schrieb:

    funktioniert dein Link nicht mehr
    Danke für den Hinweis, vor ein paar Tagen ging er noch.
    Ich werde das ganze mal beobachten. Hier ist noch einer.
    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!