Txt ändern und Info Fenster anzeigen lassen

  • Hey, ich hab 2 kleine Fragen, die erste hat was mit Txt Dateien zu tun.
    Ich hab in einem Ordner mehrere Scripte die alle auf eine Settings.txt zugreifen sollen, diese Datei soll aber auch von den Scripten geändert werden können, heißt ich führe ein Script aus und das ändert was in der textdatei.
    Den passenden Befehl fürs ändern finde ich aber nicht, bisher habe ich nur welche gefunden, die Datensätze hinten dran hängen, aber die alten stehen lassen. dass wil ich nicht.
    Also bräuchte ich ein Befehl, der eine Zeile ersetzt oder eine Zeile löschen kann, denn jedes mal die txt zu löschen und neu zu erstellen sehe ich irgendwie nicht als sehr sinnvoll ein.

    edit: 2 Frage selbst beantwortet

    Vielen Dank schonmal für die Antworten

    Gruß Introser

  • Habe ich schon gefunden, aber auch hier, FileWriteLine hängt nur hinten an und ersetzt nicht


    edit: Habe nun den Passendenbefehl gefunden, der eine Zeile ersetzt:

    _FileWriteToLine , damit ersetzt man die ganze zeile.

    Dir vielen Dank für deine hilfe :)

    Einmal editiert, zuletzt von Introser (27. Januar 2015 um 23:40)

  • Dann probiere mal dies aus:

    [autoit]

    #include <Array.au3>
    $sTest = "Zeile1" & @CRLF & _
    "Zeile2" & @CRLF & _
    "Zeile3" & @CRLF & _
    "Zeile4" & @CRLF & _
    "Zeile5" & @CRLF & _
    "Zeile6"
    $hFile = FileOpen(@ScriptDir & "\Settings.txt", 2)
    FileWrite($hFile, $sTest)
    FileClose($hFile)

    [/autoit][autoit][/autoit][autoit]

    ZeileSuchenUndErsetzen(@ScriptDir & "\Settings.txt", "Zeile4", "Zeile444")

    [/autoit][autoit][/autoit][autoit]

    Func ZeileSuchenUndErsetzen($sDatei, $sZeileSuchen, $sErsetzen, $bUeberschreiben = True)
    Local $aZeilen = FileReadToArray($sDatei)
    If Not IsArray($aZeilen) Or UBound($aZeilen) < 2 Then Return SetError(1, 0, "")
    Local $iPos = _ArraySearch($aZeilen, $sZeileSuchen)
    If Not $iPos Then Return SetError(2, 0, "")
    $aZeilen[$iPos] = $sErsetzen
    Local $sNeu = _ArrayToString($aZeilen, @CRLF)
    If $bUeberschreiben Then
    Local $hFile = FileOpen($sDatei, 2)
    If @error Then Return SetError(3, 0, "")
    FileWrite($hFile, $sNeu)
    FileClose($hFile)
    EndIf
    Return $sNeu
    EndFunc

    [/autoit]


    _FileWriteToLine macht im Prinzip das Gleiche...

    Gruß,
    UEZ

    Auch am Arsch geht ein Weg vorbei...

    ¯\_(ツ)_/¯

    Einmal editiert, zuletzt von UEZ (27. Januar 2015 um 23:59)

  • Ouh, das ist natürlich um einiges umfangreicher als FileWriteToLine.

    Da ich ja nun erst nach einigem suchen die Funktion FileWriteToLine gefunden habe wollte ich fragen, ob es iwo ne Dokumentation gibt, wo immer alle Funktionen der verschiedenen au3 Dateien sthenen, in diesem Fall alle funktionen der <File.au3>, normalerweise benutze ich immer z.b. sowas https://www.autoitscript.com/autoit3/docs/f…leWriteLine.htm und da stehen unten ja die restlichen Funktionen, aber z.b. FileWriteToLine nicht, obwohl das in der <File.au3> ja vorhanden ist. Gibt es da ne umfangreichere Dok?

  • Öhhm, wie wäre es denn mit der Hilfedatei die standardmäßog mit installiert wird??
    Innerhalb Scite-Editor mal F1 drücken. Solltest du nen anderen Editor nutzen, kannst du auch direkt ins AutoIt Installationsverzeichnis gehen und die Datei
    Autoit.chm starten. Eine bessere und umfangreichere Doku wirst du nicht finden.

    MfG Lo

    Edit: Ist quasi wie dein Link, nur mit Inhaltsverzeichnis

  • @UEZ
    Gute Umsetzung.
    Nur was ist, wenn eine Zeile zwei mal vorhanden ist, dann wird nur der erste Treffer ersetzt.

    Die Nachtmaus im Nachtmodus ;)

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • Also bräuchte ich ein Befehl, der eine Zeile ersetzt oder eine Zeile löschen kann, denn jedes mal die txt zu löschen und neu zu erstellen sehe ich irgendwie nicht als sehr sinnvoll ein.

    Wieso soll das nicht sinnvoll sein?!
    Gerade im Gegenteil, es ist NÖTIG! Damit reduziert sich der Aufwand für das Betriebssystem und vor allem für den Programmierer enorm.
    Egal was du machst, die Datei wird sowieso gelesen und nach einer Änderung idR komplett neu geschrieben.
    Dann kannst du das auch BEWUSST selbst machen und verstehst, was abläuft....
    Für einen Programmieranfänger ist es sowieso sinnvoll, einfache Funktionen zu verwenden. Mit dem Hintergrund, dass "komplizierte" Funktionen und UDF´s sowieso auf die einfachen Funktionen aufbauen!

  • @UEZ
    Gute Umsetzung.
    Nur was ist, wenn eine Zeile zwei mal vorhanden ist, dann wird nur der erste Treffer ersetzt.

    Die Nachtmaus im Nachtmodus ;)

    _ArraySearch findet leider nur den ersten Eintrag, aber man kann die Funktion ZeileSuchenUndErsetzen() solange aufrufen, bis nichts mehr gefunden wird.

    Gruß,
    UEZ ;)

    Auch am Arsch geht ein Weg vorbei...

    ¯\_(ツ)_/¯

  • Wieso soll das nicht sinnvoll sein?!
    Gerade im Gegenteil, es ist NÖTIG! Damit reduziert sich der Aufwand für das Betriebssystem und vor allem für den Programmierer enorm.
    Egal was du machst, die Datei wird sowieso gelesen und nach einer Änderung idR komplett neu geschrieben.
    Dann kannst du das auch BEWUSST selbst machen und verstehst, was abläuft....
    Für einen Programmieranfänger ist es sowieso sinnvoll, einfache Funktionen zu verwenden. Mit dem Hintergrund, dass "komplizierte" Funktionen und UDF´s sowieso auf die einfachen Funktionen aufbauen!


    Naja, ich hatte gedacht, dass ich die Datei komplett lösche und dann eine neue txt erstelle und dort die neuen configs rein schreibe und ich glaube das ist aufwendiger, da ich ja eine Datei lösche und erstelle und nicht nur neu schreibe.
    Und viel mehr bringen tut es mir doch auch nicht oder?
    Beim löschen und neu erstellen würde ich einfach die Datei in ein Array einlesen, die zeile suchen und ändern und dann das Array in die neue Datei schreiben, vom Versteheneffekt etc ist es für mich das gleiche.
    Aber hat sich ja jetzt erledigt, vielen dank für eure umfangreiche Hilfe