Bestimmt Zeile aus eine Textdatei ändern

  • VB.NET

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von programmer71.

    Hey,

    und was spricht gegen einen eigenen Versuch das Problem zu lösen? Textdatei (z.B. zeilenweise) einlesen, die fünfte Zeile abändern und wieder in einer Textdatei abspeichern. An welcher dieser drei Teilschritte treten bei dir Fragen/Schwierigkeiten auf?

    Gruß Manschula
    Hallo,

    deklariere einen String() Array, den befüllst du mit IO.File.ReadAllLines. Dann hast du jede zeile im String Array, ändere den Wert DeinStringArray(4) = der neue String. Dann kannst du mit IO.File.WrriteAllLines das Textdocument neu erstellen/überschreiben mit dem Inhalt des String Arrays.

    mfG

    Derfuhr

    VB.NET-Quellcode

    1. Dim array As String() = System.IO.File.ReadAllLines(Pfad zur Datei)
    2. TextBox1.Text = array(4) 'Wenn du es in ner TextBox bearbeiten willst.
    3. Dim fi As New FileInfo = Pfad
    4. fi.Create()
    5. System.IO.File.WriteAllLines(fi.FullName, array)

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

    @programmer71
    Wieso mit FileInfo ?
    Außerdem müsste es dann heißen ..WriteAllLines(fi.FullName, array)
    Und es muss heißen System.IO.File.ReadAllLines()
    Hier mal ein bisschen verbessert.

    VB.NET-Quellcode

    1. Option Strict On
    2. Public Class Form1
    3. Public array() As String 'Globale Variable zum Speichern
    4. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    5. array = System.IO.File.ReadAllLines("C:\Users\Alexander\Desktop\test.txt") 'Zeilen auslesen
    6. If array.Length > 4 Then TextBox1.Text = array(4) 'Wenn die Länge größer 4 (oder 0) ist, die TextBox füllen
    7. End Sub
    8. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    9. array(4) = TextBox1.Text 'Zuweisen
    10. System.IO.File.WriteAllLines("C:\Users\Alexander\Desktop\test.txt", array) 'Wieder schreiben
    11. MessageBox.Show("Done !") 'Messagebox
    12. End Sub
    13. End Class
    Und löschen:

    VB.NET-Quellcode

    1. Public Class Form1
    2. Dim lines() As String = IO.File.ReadAllLines(DEINE_TEXTDATEI)
    3. Dim ll As New List(Of String)
    4. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    5. ll.AddRange(lines)
    6. ll.RemoveAt(0)
    7. IO.File.WriteAllLines(DEINE_TEXTDATEI, ll.ToArray)
    8. End Sub
    9. End Class


    Ist zwar nicht gefragt, aber für alle Fälle :D
    also mit dem code geht es fast nur bei der aus gegebenen zeile steht nur false

    VB.NET-Quellcode

    1. Option Strict OnPublic Class Form1 Public array() As String 'Globale Variable zum Speichern
    2. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    3. array = System.IO.File.ReadAllLines(Application.StartupPath & "\test.txt") 'Zeilen auslesen If array.Length > 4 Then TextBox1.Text = array(4) 'Wenn die Länge größer 4 (oder 0) ist, die TextBox füllen
    4. End Sub
    5. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click array(4) = CStr(TextBox1.Text = TextBox2.Text) System.IO.File.WriteAllLines(Application.StartupPath & "\test.txt", array) 'Wieder schreiben MessageBox.Show("Done !") 'Messagebox End Sub
    6. End Class
    Ja, weil du TextBox1 und TextBox2 vergleichst und der Wert Boolean dann in String konvertiert wird.
    Der Wert ist "False", weil die Texte nicht gleich sind. So geht das nicht.
    Speicher das in einer Variable und schreibe das in die Klammern.

    VB.NET-Quellcode

    1. Option Strict On
    2. Public Class Form1
    3. Public array() As String 'Globale Variable zum Speichern
    4. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    5. array = System.IO.File.ReadAllLines(Application.StartupPath & "\test.txt") 'Zeilen auslesen
    6. If array.Length > 4 Then
    7. TextBox1.Text = array(4) 'Wenn die Länge größer 4 (oder 0) ist, die TextBox füllen
    8. End If
    9. End Sub
    10. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    11. Dim text As String = TextBox2.Text
    12. array(4) = CStr(text)
    13. System.IO.File.WriteAllLines(Application.StartupPath & "\test.txt", array) 'Wieder schreiben
    14. MessageBox.Show("Done !") 'Messagebox
    15. End Sub
    16. End Class

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