Wert einer Textbox auslesen und an bestimmte Stelle einer Textdatei schreiben

  • VB.NET

Es gibt 15 Antworten in diesem Thema. Der letzte Beitrag () ist von jen.

    Wert einer Textbox auslesen und an bestimmte Stelle einer Textdatei schreiben

    Hallo,

    mein Problem ist Folgendes; ich möchte den Text, den ich in meine Textbox schreibe, in eine bestimmte Zeile in meiner Textdatei schreiben (umgekehrt, also aus der Textdatei lesen und in die Textbox schreiben funktioniert problemlos, siehe Code-Schnippsel).

    VB.NET-Quellcode

    1. Dim lines() As String = System.IO.File.ReadAllLines("C:\Textdatei.txt", System.Text.Encoding.Default)
    2. TextBox1.Text = lines(2).ToString


    Jedoch würde ich eben auch gerne, wieder auf diese bestimmte Stelle schreiben, wenn ich in der Textbox etwas ändere...

    Dim lines() As String = System.IO.File.ReadAllLines("C:\Textdatei.txt", System.Text.Encoding.Default)
    lines(2).ToString = TextBox1.Text

    und wenn ich die Zuweisung einfach umdrehe bekomme ich die Fehlermeldung: "Der Ausdruck ist ein Wert und kann nicht als Ziel einer Zuweisung verwendet werden." und mit 'System.IO.File.WriteAllLines' komme ich leider auch nicht wirklich weiter...

    ich würde mich sehr über etwas Hilfe freuen,
    Vielen Dank im Voraus :)
    Danke für den Tipp, :)
    wenn ich aber bei einem 'Textbox changed Event'

    VB.NET-Quellcode

    1. lines(2) = TextBox1.Text
    2. MsgBox(lines(2))

    schreibe, wird mir in der Message Box zwar der geänderte Text angezeigt, jedoch wird nichts in das entsprechende Textfile geschrieben... ?(
    Du musst Dein Array schon in die Datei zurückschreiben. Oder dachtest Du, das geht automatisch? Einlesen musstest Du die Datei ja auch...

    VB.NET-Quellcode

    1. File.WriteAllLines("Pfad", lines)
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o

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

    Ja, das hatte ich schon versucht:

    VB.NET-Quellcode

    1. lines(2) = TextBox1.Text
    2. Dim WriteText() As String = System.IO.File.WriteAllLines("Pfad",lines)

    Fehlermeldung: "Der Ausdruck ergibt keinen Wert"
    bzw.

    VB.NET-Quellcode

    1. lines(2) = TextBox1.Text
    2. Dim WriteText() As String = System.IO.File.WriteAllLines("Pfad",lines(2))

    Fehlermeldung: "Der Wert vom Typ "String" kann nicht in "1-dimensionales Array von String" konvertiert werden."

    und mit dieser Methode:

    VB.NET-Quellcode

    1. File.WriteAllLines("Pfad", lines)

    spreche ich ja nicht diese Zeile in meinem Textfile an, aus der ich auch auslese...
    Textdatei einlesen => Änderungen vornehmen => Textdatei schreiben

    Du musst schon den ganzen Inhalt der Textdatei schreiben. Einzelne Zeilen ist nicht, sonst geht der Rest verloren.
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o
    Oder du gehst zeilenweise durch deine Txt und liest dir die jeweilige Zeile aus.
    Dann speicherst du dir den Inhalt in eine globale Variable.

    Und wenn dann die Änderung getätigt werden soll, gehst du wieder zeilenweise durch und wenn der Inhalt der Zeile mit dem Wert aus der Variable übereinstimmt, dann ersetzt du ihn durch den neuen Text.
    @SpaceyX
    Danke für deine Hilfe!

    Aber gibt es nicht auch irgendeine Möglichkeit in das Textfile zu schreiben (analog zu dem, wie ich aus dem Textfile lese)?
    Denn mein Textfile dient zur Konfiguration für mein ganzes Programm (deshalb ziemlich umfangreich...) und jeder Zeile ist eine entsprechende Textbox zur Bearbeitung zugewiesen,
    deshalb wäre ich schon ziemlich froh, wenn ich das mit dem gesamten Textfile auslesen umgehen könnte...

    @Don_Batisto
    Danke erstmal, aber das mit dem Zeilen auslesen mache ich ja bereits.
    und das mit dem Ersetzen habe ich so versucht:

    VB.NET-Quellcode

    1. Dim Exchange As String = lines(2).Replace(lines(2), TxtBez1.ToString)

    was zwar den Text gegen den Neuen ersetzen würde, jedoch funktioniert das mit dem Schreiben so jedoch nicht

    VB.NET-Quellcode

    1. System.IO.File.WriteAllLines("Pfad",Exchange)

    (Fehlermeldung: "Der Wert vom Typ "String" kann nicht in "1-dimensionales Array von String" konvertiert werden.")

    oder meinst du damit etwas anderes?
    ?( hiermit lege ich ja nur Einstellungen für meine Form fest, oder?

    Ich habe damit nicht solche Einstellungen gemeint. (unter anderem lege ich in dem Konfig-File die Sprachauswahl fest, bzw. welcher Text eben in welche Textbox geschrieben wird etc..)
    Dann hab ich Dich falsch verstanden, bzw. falsch gedacht. Dann ist wohl ein typ. DataSet der richtige Tip für Dich.
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o
    Dann musst du das mal genauer erklären - ist für mich nicht ganz schlüssig...

    Wenn du zB folgendes als Txt hast, was steht dann in der Variable wenn du es mit deinem Code auslesen würdest.

    aaaaaaaaaaaaaaaaaaaaaaaaaaaa
    bbbbbbbbbbbbbbbbbbbbbbbbbbbb
    ccccccccccccccccccccccccccccccccccccccc
    dddddddddddddddddddddddddddd
    eeeeeeeeeeeeeeeeeeeeeeeeeeee


    Das soll jetzt ne Txt mit 5 Zeilen sein. Was wird nun ausgelesen? Alles? Oder nur eine Zeile?
    @Don_Batisto

    Text im Textfile:
    aaaaaaaaaaaaaaaaaaaaaaaaaaaa
    bbbbbbbbbbbbbbbbbbbbbbbbbbbb
    ccccccccccccccccccccccccccccccccccccccc
    dddddddddddddddddddddddddddd
    eeeeeeeeeeeeeeeeeeeeeeeeeeee

    VB.NET-Quellcode

    1. Dim Konfig() As String = System.IO.File.ReadAllLines("Pfad zur Textdatei", System.Text.Encoding.Default)
    2. 'Zeile 1 auslesen (! Zeilen in Textfile sind 0 basiert)
    3. TextBox1.Text= (Konfig(0))


    dann würde in meiner TextBox1 'aaaaaaaaaaaaaaaaaaaaaaaaaaaa' stehen

    VB.NET-Quellcode

    1. TextBox2.Text= (Konfig(1))

    und jetzt würde in meiner TextBox2 'bbbbbbbbbbbbbbbbbbbbbbbbbbbb' stehen. usw.

    Entschuldigung, wenn ich mich unklar ausgedrückt habe.

    @SpaceyX
    Ebenfalls, Entschuldigung, wenn ich mich unklar ausgedrückt habe, ich hoffe dass ich nun etwas mehr Klarheit in mein Problem bringen konnte...
    Bei einem DataSet würde ich dann zuerst die Daten aus dem Textfile in diese Datentabelle übertragen, und könnte dann via Index darauf zugreifen, stimmt das so in etwa? Bzw. beim Schreiben, eben umgekehrt..
    Ich muss leider jetzt los. Dieser Link hilft Dir bestimmt.

    vb-paradise.de/allgemeines/tip…hste-variante/#post523310
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o
    @SpaceyX

    Vielen Dank für deine Hilfe.
    ich hatte immer

    VB.NET-Quellcode

    1. Dim WriteText() As String = ....

    voran gesetzt, und wollte darauf dann noch zugreifen (komplett unsinnig, ich weiß :S )

    Habe jetzt dank dem Beitrag von @Don_Batisto noch einmal über deinen vorherigen Post nachgedacht, und es erneut versucht. Funktioniert einwandfrei, Dankeschön!! :)

    VB.NET-Quellcode

    1. Dim Konfig() As String = System.IO.File.ReadAllLines("Pfad zur Textdatei", System.Text.Encoding.Default)
    2. Konfig(2) = TextBox1.Text
    3. System.IO.File.WriteAllLines(("Pfad zur Textdatei", Konfig)


    mfG Jenny