Seite 1 von 1
Textdatei ändern bzw Wert ersetzen.
Verfasst: 04.02.2013 11:31
von funkheld
Hallo, guten Tag.
Ich möchte bitte bestimmt Werte ersetzen aus einer Textdatei.
1000
0
#
5
-1
0
0
0
#
9
-1
0
1000
0
#
0
-1
0
0
0
#
0
#
#
0
56
Alle Werte mit "1000" sollen ersetzt werden durch die "0".
Wie geht das ?
Danke.
Gruss
peter
Re: Textdatei ändern bzw Wert ersetzen.
Verfasst: 04.02.2013 12:18
von Sunny
Hier mal ein kleines Beispiel, wie man das Problem lösen könnte:
Code: Alles auswählen
NewList row.s()
Datei$ = "Pfad zur Text-Datei"
If OpenFile(0, Datei$)
While Eof(0) = 0
AddElement(row())
row() = ReadString(0)
If row() = "1000"
row() = "0"
EndIf
Wend
CloseFile(0)
If CreateFile(0, Datei$)
ForEach row()
WriteStringN(0, row())
Next
CloseFile(0)
EndIf
EndIf
Re: Textdatei ändern bzw Wert ersetzen.
Verfasst: 04.02.2013 15:31
von funkheld
Jup, danke.
Wusste garnicht, das es mit so wenig Befehlen funktioniert.
Gruss
peter
Re: Textdatei ändern bzw Wert ersetzen.
Verfasst: 04.02.2013 15:47
von NicTheQuick
Eine andere (allerdings fehleranfällige) Möglichkeit wäre diese hier:
Code: Alles auswählen
Define.s file = "Dateiname.txt"
Define *mem, content.s, format.i
If ReadFile(0, file)
format = ReadStringFormat(0)
*mem = AllocateMemory(Lof(0), #PB_Memory_NoClear)
If *mem
ReadData(0, *mem, Lof(0))
content = PeekS(*mem, -1, format)
FreeMemory(*mem)
content = ReplaceString(content, "1000", "0")
EndIf
CloseFile(0)
If CreateFile(0, file)
WriteString(0, content, format)
CloseFile(0)
EndIf
EndIf
Fehleranfällig ist sie deswegen, weil jedes Vorkommen von "1000" zu einer "0" ersetzt wird, d.h. auch wenn da steht "1000456" wird dies zu "0456".
Ich wollte nur noch eine zweite Möglichkeit darstellen. Der Code von Sunny gefällt mir eigentlich besser.
Re: Textdatei ändern bzw Wert ersetzen.
Verfasst: 04.02.2013 16:08
von ts-soft
NicTheQuick hat geschrieben:Fehleranfällig ist sie deswegen, weil jedes Vorkommen von "1000" zu einer "0" ersetzt wird, d.h. auch wenn da steht "1000456" wird dies zu "0456".
Nach jeder Zeile befindet sich ein CRLF$ bzw. LF$, wenn Du das mit einbeziehst ist die Fehleranfälligkeit beseitigt.
Dein Code ist in jedem Falle wesentlich schneller, was sich allerdings bei so kleinen Dateien nicht auswirken wird.
Re: Textdatei ändern bzw Wert ersetzen.
Verfasst: 04.02.2013 19:37
von 7x7
funkheld hat geschrieben:Alle Werte mit "1000" sollen ersetzt werden durch die "0".
Wenn "0000" oder 3xLeerzeichen +"0" auch genehm ist, reicht auch:
Code: Alles auswählen
OpenFile(1,"Dateiname.txt")
While Not Eof(1)
If ReadString(1)="1000"
FileSeek(1,Loc(1)-6)
WriteStringN(1,"0000") ;bzw. 3xLeerzeichen+"0"
EndIf
Wend
CloseFile(1)