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.
StringReplace
-
- [ gelöst ]
-
Gremlin78 -
6. Mai 2013 um 20:47 -
Geschlossen -
Erledigt
-
-
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 -
Du musst die Datei vor dem Schreibvorgang mit FileClose schließen, nicht danach. Sie ist immer noch im Lesemodus geöffnet und das Handle verwendest du sowieso nicht mehr nach FileRead...
-
Hat leider noch nichts geholfen, Zeile bleibt nach wie vor drin.
-
Hi,
so etwa...Spoiler anzeigen
[autoit]filedelete(@ScriptDir & '\Text.txt')
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
filewrite(@ScriptDir & '\Text.txt',"zeile1"&@crlf&"zeile2"&@crlf&"zeile3"&@crlf) ;text erstellen
msgbox(0,"vorher",fileread(@ScriptDir & '\Text.txt'))$hgui=guicreate("test")
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$hinput=guictrlcreateinput("zeile2",1,1)_export($hinput)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
msgbox(0,"nachher",fileread(@ScriptDir & '\Text.txt'))Func _export($read1)
[/autoit] [autoit][/autoit] [autoit]
Local $sRepl = GUICtrlRead($read1)&@crlf
Local $file = FileOpen("Text1.txt", 0)
Local $sText = FileRead($file)
Local $sNewText = StringReplace($sText, $sRepl,"")
FileClose($file)filedelete(@ScriptDir & '\Text.txt')
[/autoit] [autoit][/autoit] [autoit]
FileWrite(@ScriptDir & '\Text.txt', $sNewText)EndFunc
[/autoit] -
Damit löscht er mir die gesamte "Text.txt" Datei ohne sie neu zu schreiben.
-
hups, c&p-fehler....
Spoiler anzeigen
[autoit]filedelete(@ScriptDir & '\Text.txt')
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
filewrite(@ScriptDir & '\Text.txt',"zeile1"&@crlf&"zeile2"&@crlf&"zeile3"&@crlf) ;text erstellen
msgbox(0,"vorher",fileread(@ScriptDir & '\Text.txt'))$hgui=guicreate("test")
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$hinput=guictrlcreateinput("zeile2",1,1)_export($hinput)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
msgbox(0,"nachher",fileread(@ScriptDir & '\Text.txt'))Func _export($read1)
[/autoit] [autoit][/autoit] [autoit]
Local $sRepl = GUICtrlRead($read1)&@crlf
Local $file = FileOpen("Text.txt", 0)
Local $sText = FileRead($file)
Local $sNewText = StringReplace($sText, $sRepl,"")
FileClose($file)filedelete(@ScriptDir & '\Text.txt')
[/autoit] [autoit][/autoit] [autoit]
FileWrite(@ScriptDir & '\Text.txt', $sNewText)EndFunc
[/autoit]ZitatDamit 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')
[/autoit]
FileWrite(@ScriptDir & '\Text.txt', $sNewText)löscht und schreibt eine Datei, wenn das nicht bei dir funktioniert, muss ich passen...
-
Endlich hats funktioniert, habs nochmal neu rein kopiert und siehe da.
Vielen Dank.