Wollen wir bspw. bestimmte Worte (oder Zeichenfolgen) aus einer Textdatei entfernen, so können wir die Datei natürlich über die Funktionen FOPEN(), FGETS(), FWRITE() und FCLOSE() verarbeiten, mit Hilfe von FILETOSTR() und STRTOFILE() funktioniert dies jedoch erheblich einfacher.
Über FILETOSTR() lesen wir den Inhalt einer Datei komplett in eine Variable die wir anschliessend gezielt bearbeiten und mit STRTOFILE() wieder auf die Festplatte schreiben können.
Im Blogeintrag zur Manipulation von MP3 ID3v1 Tags arbeite ich ebenfalls mit diesen beiden Funktionen, allerdings wird dort ein kompletter Bereich des Datenstroms verändert.
lcFile = [D:\Temp\test.txt]
lcFileContent = FILETOSTR( lcFile )
* Do something
STRTOFILE( lcFileContent , lcFile )
Zur Verarbeitung des Datenstroms welcher sich nun in der Variablen 'lcFileContent' befindet, stehen uns zwei Funktionen zur Verfügung, von denen die eine ( OCCURS() ) die Häufigkeit des Auftretens der zu entfernenden Zeichenkette aufzeigt und die andere ( STRTRAN() ) den Austausch bzw. das Entfernen vornimmt.
Im nun folgenden Codebeispiel wird zunächst eine Testdatei erzeugt und anschliessend wieder eingelesen, das Auftreten der Zeichenfolge 'Lorem ipsum' geprüft und das zweite Auftreten aus dem Datenstrom entsorgt. Anschliessend wird die Datei aktualisiert.
* // Schritt 1: Demodaten erzeugen
* // Step 1 : Creating demo data
LOCAL lcFileName as String , lcString as String , lcFileContent as String , ;
lcSafety as String
lcFileName = [D:\Temp\test.txt]
lcSafety = SET( [Safety] )
SET SAFETY OFF
* // Der Beispieltext enthält insgesamt 4x die Zeichenfolge 'Lorem ipsum'
* // This demo data contains 4x the character string 'Lorem ipsum'
TEXT TO lcString TEXTMERGE NOSHOW PRETEXT 2+4
Lorem ipsum dolor sit amet, consetetur sadipscing elitr,
sed diam nonumy eirmod tempor invidunt ut labore et dolore
magna aliquyam erat, sed diam voluptua. At vero eos et
accusam et justo duo dolores et ea rebum. Stet clita kasd
gubergren, no sea takimata sanctus est Lorem ipsum dolor
sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing
elitr, sed diam nonumy eirmod tempor invidunt ut labore et
dolore magna aliquyam erat, sed diam voluptua. At vero eos
et accusam et justo duo dolores et ea rebum. Stet clita
kasd gubergren, no sea takimata sanctus est Lorem ipsum
dolor sit amet.
ENDTEXT
STRTOFILE( lcString , lcFileName )
* // Schritt 2: Einlesen der erzeugten Testdatei
* // Step 2 : Reading the created textfile
lcFileContent = FILETOSTR( lcFileName )
* // Schritt 3: Feststellen der Häufigkeit des Auftretens von 'Lorem ipsum'
* // Step 3 : Checking the frequency of occurrence of 'Lorem ipsum'
CLEAR
? [Lorem ipsum was found ]
?? OCCURS( [Lorem ipsum] , lcFileContent )
?? [ times within the filestream]
* // Schritt 4: Entfernen des zweiten Auftretens von 'Lorem ipsum'
* // Step 4 : Removing the second occurance of 'Lorem ipsum'
lcFileContent = STRTRAN( lcFileContent , [Lorem ipsum] , [] , 2 , 1 )
* // Schritt 5: Aktualisieren der Datei auf der Festplatte
* // Step 5 : Updating the file on harddisk
STRTOFILE( lcFileContent , lcFileName )
SET SAFETY &lcSafety
RELEASE lcFileName , lcString , lcFileContent , lcSafety