Textdatei auslesen und Zeilen löschen

  • VB.NET

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von BlueIce.

    Textdatei auslesen und Zeilen löschen

    Hallo allerseits!

    Ich habe ein kleines Telefontool erstellt in dem es dem User zur laufzeit möglich ist Telefonnummern in einem Textdokument zu speichern damit diese beim nächsten Start der Anwendung wieder zur verfügung stehen.
    Das erstellen des Textdokumentes funktioniert auch ganz gut. Nur stehe ich jetzt vor einem weiteren Problem: Dem löschen bestimmter Nummern aus dieser Liste...

    Dazu habe ich mir eine Form erstellt mit Labels (lblName, lblNummer) und drei Buttons (btnVor, btnZurück, btnLöschen). Mit den Buttons kann ich Zeilenweise vor bzw. zurück blättern was auch funktioniert. Allerdings habe ich kein "Ende" des Dokumentes festlegen können also wird der Zeilenzähler (klick auf btnVor) ständig um eins erhöht (s. Kommentare im Code).

    Mein bisheriger Code:

    VB.NET-Quellcode

    1. Imports System.IO
    2. Public Class frmKurzwahlWeg
    3. Dim Zeile As Integer = 1
    4. Private Sub Form3_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    5. lblRückmeldung.Text = ""
    6. Dim lines() As String = IO.File.ReadAllLines("Kurzwahl.txt")
    7. Dim sr As New StreamReader(Path.GetDirectoryName(Application.ExecutablePath) & "\Kurzwahl.txt")
    8. On Error GoTo raus
    9. Dim linetext As String = lines(Zeile)
    10. Dim Data() As String = linetext.Split(CChar(";"))
    11. Dim NameKW As String = Data(0)
    12. Dim Nummer As String = Data(1)
    13. lblName.Text = NameKW
    14. lblNummer.Text = Nummer
    15. raus:
    16. sr.Close()
    17. sr.Dispose()
    18. sr = Nothing
    19. End Sub
    20. Private Sub btnVor_Click(sender As System.Object, e As System.EventArgs) Handles btnVor.Click
    21. Zeile = Zeile + 1
    22. Dim lines() As String = IO.File.ReadAllLines("Kurzwahl.txt")
    23. Dim sr As New StreamReader(Path.GetDirectoryName(Application.ExecutablePath) & "\Kurzwahl.txt")
    24. On Error GoTo raus 'nicht elegant aber musste sein da ich sonst eine Fehlermeldung bekomme
    25. 'wenn das Ende des Textdokuments erreicht ist
    26. If Zeile >= 1 Then ' "AND Zeile < EndOfLines" oder sowas sollte hier noch hinzu. komme nur nicht drauf
    27. Dim linetext As String = lines(Zeile)
    28. Dim Data() As String = linetext.Split(CChar(";"))
    29. Dim NameKW As String = Data(0)
    30. Dim Nummer As String = Data(1)
    31. lblName.Text = NameKW
    32. lblNummer.Text = Nummer
    33. End If
    34. raus:
    35. sr.Close()
    36. sr.Dispose()
    37. sr = Nothing
    38. End Sub
    39. Private Sub btnZurück_Click(sender As System.Object, e As System.EventArgs) Handles btnZurück.Click
    40. If Zeile > 1 Then Zeile = Zeile - 1
    41. Dim lines() As String = IO.File.ReadAllLines("Kurzwahl.txt")
    42. Dim sr As New StreamReader(Path.GetDirectoryName(Application.ExecutablePath) & "\Kurzwahl.txt")
    43. On Error GoTo raus
    44. If Zeile >= 1 Then
    45. Dim linetext As String = lines(Zeile)
    46. Dim Data() As String = linetext.Split(CChar(";"))
    47. Dim NameKW As String = Data(0)
    48. Dim Nummer As String = Data(1)
    49. lblName.Text = NameKW
    50. lblNummer.Text = Nummer
    51. End If
    52. raus:
    53. sr.Close()
    54. sr.Dispose()
    55. sr = Nothing
    56. End Sub
    57. Private Sub btnLöschen_Click(sender As System.Object, e As System.EventArgs) Handles btnLöschen.Click
    58. ' hier komme ich nicht weiter. Schon viel rum probiert ohne Lösung. Hoffe mir kann wer nen Tipp geben
    59. End Sub
    60. End Class

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

    Lied die Datei nur einmal ein mit

    VB.NET-Quellcode

    1. Dim lines() As String = System.IO.File.ReadAllLines(DEINE_DATEI)

    Pack die Zeilen in eine List(Of String) oder besser List (Of DEINE_TELEFON_STRUKTUR).
    Die List bietet eine Vielfalt an Zugriffsmöglichkeiten und ihr Ende ist sauber definiert.
    Du kannst nach Belieben Einträge löschen und am Ende speicherst Du wieder alles auf Platte.
    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!