StringReplace

  • Hallo, ich habe folgendes Problem:
    ich will aus einer Textdatei (Text.txt) die Zeile extrahieren, die in einer Inputbox ($read1) steht, in eine neue Datei (neu.txt) schreiben und in Text.txt löschen.
    Leider habe ich immer das Problem, dass entweder die Zeile nicht gelöscht wird oder die restlichen Zeilen unter die alte Datei geschrieben werden.  ?(
    Für ein Stück Quellcode wäre ich dankbar, weil ich noch recht neu in AutoIt bin.
    Danke für Eure Mühe.

    2 Mal editiert, zuletzt von Gremlin78 (7. Mai 2013 um 21:03)

  • Für ein Stück Quellcode wären wir auch dankbar ;)
    Schließlich hast du ja schon was probiert. Also zeig mal.
    Das sollte doch eigentlich in "Hilfe & Unterstützung rein".

  • so oder so ähnlich wäre mein Gedanke:


    Func _export($read1)
    Local $sRepl = @LF & GUICtrlRead($read1) & @CR
    Local $file = FileOpen("Text.txt", 0)
    Local $sText = FileRead($file)
    Local $sNewText = StringReplace($sText, $sRepl,"")
    FileWrite(@ScriptDir & '\Text.txt', @CRLF & $sNewText)
    FileClose($file)
    EndFunc

  • Hi,
    so etwa...

    Spoiler anzeigen
    [autoit]

    filedelete(@ScriptDir & '\Text.txt')
    filewrite(@ScriptDir & '\Text.txt',"zeile1"&@crlf&"zeile2"&@crlf&"zeile3"&@crlf) ;text erstellen
    msgbox(0,"vorher",fileread(@ScriptDir & '\Text.txt'))

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

    $hgui=guicreate("test")
    $hinput=guictrlcreateinput("zeile2",1,1)

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

    _export($hinput)
    msgbox(0,"nachher",fileread(@ScriptDir & '\Text.txt'))

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

    Func _export($read1)
    Local $sRepl = GUICtrlRead($read1)&@crlf
    Local $file = FileOpen("Text1.txt", 0)
    Local $sText = FileRead($file)
    Local $sNewText = StringReplace($sText, $sRepl,"")
    FileClose($file)

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

    filedelete(@ScriptDir & '\Text.txt')
    FileWrite(@ScriptDir & '\Text.txt', $sNewText)

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

    EndFunc

    [/autoit]
  • hups, c&p-fehler....

    Spoiler anzeigen
    [autoit]

    filedelete(@ScriptDir & '\Text.txt')
    filewrite(@ScriptDir & '\Text.txt',"zeile1"&@crlf&"zeile2"&@crlf&"zeile3"&@crlf) ;text erstellen
    msgbox(0,"vorher",fileread(@ScriptDir & '\Text.txt'))

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

    $hgui=guicreate("test")
    $hinput=guictrlcreateinput("zeile2",1,1)

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

    _export($hinput)
    msgbox(0,"nachher",fileread(@ScriptDir & '\Text.txt'))

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

    Func _export($read1)
    Local $sRepl = GUICtrlRead($read1)&@crlf
    Local $file = FileOpen("Text.txt", 0)
    Local $sText = FileRead($file)
    Local $sNewText = StringReplace($sText, $sRepl,"")
    FileClose($file)

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

    filedelete(@ScriptDir & '\Text.txt')
    FileWrite(@ScriptDir & '\Text.txt', $sNewText)

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

    EndFunc

    [/autoit]
    Zitat

    Damit löscht er mir die gesamte "Text.txt" Datei ohne sie neu zu schreiben.

    dann hast du ein Problem, welches nichts mit AutoIt zu tun hat.

    [autoit]

    filedelete(@ScriptDir & '\Text.txt')
    FileWrite(@ScriptDir & '\Text.txt', $sNewText)

    [/autoit]

    löscht und schreibt eine Datei, wenn das nicht bei dir funktioniert, muss ich passen...