Bestimmten "Text" einer Textdatei auslesen & ersetzen (Zeilen unabhängig)

  • VB.NET

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

    Bestimmten "Text" einer Textdatei auslesen & ersetzen (Zeilen unabhängig)

    Hallo liebe Leute,
    ich versuche seit mehreren Stunden auf einen Weg zu kommen in dem ich, wie in der Überschrift beschrieben, bestimmte Einträge (keine Zeilen, da sich die Zeile des Eintrages abändert [durch ein anderes Programm]) einer Textdatei auslesen und verändern kann. Beispiel:

    Textdatei.txt
    Inhalt:
    a=1
    b=2
    c=3

    auf einem anderem Computer:
    Inhalt der Textdatei.txt:
    c=3
    a=1
    b=2

    nun will ich den Wert von "b" abändern.

    Habt ihr einen Rat für mich?

    Edit: Gerne auch eine Library. :)
    Grüße,
    Cyruxx

    Edit by hal2000:
    - Die Farbe ROT ist der Moderation vorbehalten. Hervorhebung geändert.

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

    SchokoMilch schrieb:

    Ich habe es nicht ganz verstanden aber:
    Erstell eine Beispiel.conf
    Schreib halt

    a=1
    b=2
    c=3
    blabla=whatever

    Rein, und sprichst dann zB. b an und änderst den wert.
    Mein Programm ändert .txt Dateien eines Spieles ab ( FPS increase ), die Position der "Werte" also z.B. "FieldOfView=90" wechseln die Zeile. Auf einem Computer sind sie z.B. in der Zeile 23, auf dem anderen allerdings in Zeile 34. Ich möchte, das die Datei nach dem jeweiligen Wert absucht ("FieldOfView=") und die Zahl dahinter wahlweise ersetzt. :)
    o/

    so in etwa sollte das gehen...

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    3. Dim lines() As String = File.ReadAllLines(My.Computer.FileSystem.SpecialDirectories.Desktop & "\1.txt")
    4. For i As Integer = 0 To lines.Length - 1
    5. If lines(i).StartsWith("a") Then
    6. lines(i) = "a=10"
    7. Exit For
    8. End If
    9. Next
    10. File.WriteAllLines(My.Computer.FileSystem.SpecialDirectories.Desktop & "\1.txt", lines.ToArray())
    11. End Sub
    12. End Class
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o

    SpaceyX schrieb:

    o/

    so in etwa sollte das gehen...

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    3. Dim lines() As String = File.ReadAllLines(My.Computer.FileSystem.SpecialDirectories.Desktop & "\1.txt")
    4. For i As Integer = 0 To lines.Length - 1
    5. If lines(i).StartsWith("a") Then
    6. lines(i) = "a=10"
    7. Exit For
    8. End If
    9. Next
    10. File.WriteAllLines(My.Computer.FileSystem.SpecialDirectories.Desktop & "\1.txt", lines.ToArray())
    11. End Sub
    12. End Class
    An sich eine Klasse Idee, nur überschreibt er nun nicht den Wert :/

    VB.NET-Quellcode

    1. Using reader As IO.StreamReader = New IO.StreamReader("cfg_path.txt") 'Lesen der Datei cfg_path.txt
    2. path = reader.ReadLine()
    3. End Using
    4. Using reader As IO.StreamReader = New IO.StreamReader(path & "/ArmA2OA.cfg") 'Lesen der Datei ArmA2OA.cfg im Ordner "path"
    5. arma2oa = reader.ReadLine()
    6. End Using
    7. Dim Content As String() = System.IO.File.ReadAllLines("cfg_path.txt", System.Text.Encoding.Default)
    8. Dim lines() As String = System.IO.File.ReadAllLines(path & "/" & Content(1) & ".ArmA2OAProfile")
    9. For i As Integer = 0 To lines.Length - 1
    10. If lines(i).StartsWith("SceneComplexity") Then
    11. lines(i) = "SceneComplexity=" & GhostComboBox4.Text
    12. Exit For
    13. End If
    14. Next
    15. System.IO.File.WriteAllLines(path & "/" & Content(1) & ".ArmA2OAProfile", lines.ToArray())
    dann debugge mal. setz dir nen haltepunkt bei lines(i) = und gugg, ob der codeabschnitt überhaupt betreten wird...
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o