Datei im Anwendungsordner verändern

  • VB.NET

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von sonne75.

    Datei im Anwendungsordner verändern

    Hallo! Ich will in einer Datei die sich im Installationspfad meiner Anwendung befindet eine Textpassage per Buttonklick ändern.

    Hab mal im Internet folgenden Code aufgefunden:

    VB.NET-Quellcode

    1. Dim TextDateiInhalte As String
    2. Using myReader As New System.IO.StreamReader("c:\TextDateiName.txt")
    3. TextDateiInhalte = myReader.ReadToEnd
    4. End Using
    5. TextDateiInhalte = TextDateiInhalte.Replace("alterText", "neuerText")
    6. Using myWriter As New System.IO.StreamWriter("c:\TextDateiName.txt", False)
    7. myWriter.Write(TextDateiInhalte)
    8. End Using
    9. End Sub



    Jetzt muss der Code auf meine Bedürfnisse geändert werden. Hab das mal so probiert:

    VB.NET-Quellcode

    1. Dim TextDateiInhalte As String
    2. Using myReader As New System.IO.StreamReader(Path.GetDirectoryName(Application.ExecutablePath) & "\Daten\" & ListBox1.SelectedItem & ".xml")
    3. TextDateiInhalte = myReader.ReadToEnd
    4. End Using


    gebe ich wie man oben sieht nach "Using myReader As New System.IO.StreamReader" meinen Pfad ein - wird "myReader" unterstrichen und eine Fehlermeldung ist ersichtlich:

    Fehler 3 Fehler bei der Überladungsauflösung, da keine zugreifbare "New" ohne einschränkende Konvertierung aufgerufen werden kann:
    "Public Sub New(path As String)": Der mit dem Argument übereinstimmende Parameter "path" wird von "Object" auf "String" reduziert.
    "Public Sub New(stream As System.IO.Stream)": Der mit dem Argument übereinstimmende Parameter "stream" wird von "Object" auf "System.IO.Stream" reduziert. G:\Eigene Dokumente\Visual Studio 2008\Projects\Hydrantmanager\test\Form8.vb 585 15 Hydrantmanager



    Kann mir jemand helfen? Wie muss ich den Code um ändern?
    System.IO. vor das Path?! ;)
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    ... Nun solltest es selber wissen. :'D
    @vierkant:: Mach es so:

    VB.NET-Quellcode

    1. Dim lines() = IO.File.ReadAllLines("c:\TextDateiName.txt")
    2. lines(2) = "bla"
    3. IO.File.WriteAllLines("c:\TextDateiName.txt", lines)
    Da ist gesichert, dass Du nur genau eine Zeile änderst.
    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!
    @vierkant

    Ich würde Pfade mit Path.Combine verknüpfen, damit keine Probleme mit "/" und "\" auftauchen. Bei mir funktioniert es übrigens so, wie es sollte (mit Path.Combine):

    VB.NET-Quellcode

    1. Using myReader As New System.IO.StreamReader(Path.Combine(Path.GetDirectoryName(Application.ExecutablePath), "Daten", ListBox1.SelectedItem.ToString & ".xml"))
    2. MessageBox.Show(myReader.ReadToEnd)
    3. End Using

    Der Fehler liegt übrigens daran, dass du ListBox1.SelectedItem verwendest. Das ist natürlich kein String und deshalb muss etwas konvertiert werden. Einfach ToString hinten anhängen und schon sollte es funktionieren.

    Dringende Empfehlung:
    Falls noch nicht unbedingt Option Strict On einschalten

    Gruß
    Switcherlapp97
    RubiksCubeSolver


    Jetzt im Showroom