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)