Inhalt einer Text-Datei ändern [ERLEDIGT]

Alle Fragen um die Programmierung, die sich sonst nicht kategorisieren lassen. Von Makro bis Codeblock, von IF bis ENDIF

Moderator: Moderatoren

Antworten
Benutzeravatar
Bertram Hansen
Foren-Moderator
Foren-Moderator
Beiträge: 1015
Registriert: Di, 27. Sep 2005 8:55
Wohnort: 51379 Leverkusen
Hat sich bedankt: 28 Mal
Danksagung erhalten: 20 Mal
Kontaktdaten:

Inhalt einer Text-Datei ändern [ERLEDIGT]

Beitrag von Bertram Hansen »

Hallo zusammen,

ich möchte gerne in einer Text-Datei eine bestimmte Zeichenkette suchen und ersetzten. Öffnen, suchen und ersetzten ist klar, aber wie bekomme ich jetzt den geänderten String wieder in die Datei?

Code: Alles auswählen

      cExportFile := "c:\Ordner\Datei1.CSV")
      nMySize   := FileSize(cExportFile)
      nMyHandle := FOPEN(cExportFile, FO_READWRITE)
      cMyString := SPACE(nMySize)
      FRead(nMyHandle, @cMyString, nMySize)
      cMyString := StrTran( cMyString, #VONDATUM#, DTOC(DATE()))        
      ???? und jetzt ????
      
      FCLOSE(nMyHandle)
Muss ich die "alte" Datei löschen und neu über FCREATE() schreiben oder gibt es so etwas wie FREPLACE() ????
:wave:
Gruß Bertram
http://www.tobax.de
Mitglied der XUG Cologne
Mitglied der XUG Osnabrück
Beisitzer des Deutschsprachige Xbase-Entwickler e.V.

Solange Kakaobohnen an Bäumen wachsen ist Schokolade Obst!
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Re: Inhalt einer Text-Datei ändern

Beitrag von Manfred »

memoread() memowrit()?
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
ramses
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2513
Registriert: Mi, 28. Jul 2010 17:16
Hat sich bedankt: 12 Mal
Danksagung erhalten: 77 Mal

Re: Inhalt einer Text-Datei ändern

Beitrag von ramses »

fseek(myHandle, 0, FS_SET ) // Filepointer an den Anfang stellen
fwrite(myHandle, cMyString ) // Datei neu schreiben
fclose(....
Geht aber nur wenn die Datei nicht kürzer wird!! Sonst bleibt am schluss der alte Teil stehen.
Valar Morghulis

Gruss Carlo
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14651
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Re: Inhalt einer Text-Datei ändern

Beitrag von Jan »

Manfred hat geschrieben: Mi, 20. Jan 2021 12:30memoread() memowrit()?
Das mach ich nur ungerne. Weil MemoWrit() am Dateiende immer noch ein Chr(26)(?) anhängt. Da ist FWrite() wesentlich besser. Wo es nicht drauf ankommt ist MemoWrit() natürlich einfacher.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16508
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: Inhalt einer Text-Datei ändern

Beitrag von Martin Altmann »

Yup.
Ich würde grundsätzlich die Finger von memowrite() lassen!

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9355
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 101 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Re: Inhalt einer Text-Datei ändern

Beitrag von Tom »

Oder StrFile() aus den Tools. Funktioniert einwandfrei, und das schon seit dem achtzehnten Jahrhundert.
Herzlich,
Tom
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Inhalt einer Text-Datei ändern

Beitrag von brandelh »

Man Könnte mit FWRITE() zwar einzelne Zeichen austauschen, aber das dauert auf jeden Fall länger wie alles einlesen, ändern und wieder schreiben.
Wie haben ja schon einige geschrieben, MemoWrit() würde ich nie verwenden !
Gruß
Hubert
Benutzeravatar
Bertram Hansen
Foren-Moderator
Foren-Moderator
Beiträge: 1015
Registriert: Di, 27. Sep 2005 8:55
Wohnort: 51379 Leverkusen
Hat sich bedankt: 28 Mal
Danksagung erhalten: 20 Mal
Kontaktdaten:

Re: Inhalt einer Text-Datei ändern

Beitrag von Bertram Hansen »

Danke für die vielen Tipps. :D

Ich habe mich jetzt für die Lösung von Ramses entschieden. Wenn Memowrit() kein CHR(26) dranhängen würde, dann hätte ich das darüber realisiert.
:wave:
Gruß Bertram
http://www.tobax.de
Mitglied der XUG Cologne
Mitglied der XUG Osnabrück
Beisitzer des Deutschsprachige Xbase-Entwickler e.V.

Solange Kakaobohnen an Bäumen wachsen ist Schokolade Obst!
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9355
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 101 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Re: Inhalt einer Text-Datei ändern [ERLEDIGT]

Beitrag von Tom »

StrFile() hängt auch kein Chr(26) an, ist superstabil und realisiert alles in einer Zeile. FileStr() heißt die Gegenfunktion. War früher in den Tools, seit 2.0 standardmäßig dabei.
Herzlich,
Tom
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14651
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Re: Inhalt einer Text-Datei ändern [ERLEDIGT]

Beitrag von Jan »

Tom hat geschrieben: Mi, 20. Jan 2021 14:44War früher in den Tools
Auch heute noch. :-D

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
flanelli
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 151
Registriert: Di, 11. Mai 2010 16:27
Hat sich bedankt: 3 Mal
Danksagung erhalten: 9 Mal

Re: Inhalt einer Text-Datei ändern [ERLEDIGT]

Beitrag von flanelli »

Tom hat geschrieben: Mi, 20. Jan 2021 14:44 Kann Tom da nur absolut zustimmen...

StrFile() hängt auch kein Chr(26) an, ist superstabil und realisiert alles in einer Zeile. FileStr() heißt die Gegenfunktion. War früher in den Tools, seit 2.0 standardmäßig dabei.
Man kann ja vieles auch nachbauen aber ohne Strfile() und Filestr() wären alle Manipulationen
von Textdateien seit es die Nantucket-Tools gab fast undenkbar gewesen unter Bedacht
auf einfachste Handhabung und 100%tige Verlässlichkeit.

Mit den Token-Funktionen verhält es sich ebenso, absolut sicheres und einfachstes Stringhandling...
Ahoile aus dem Süden
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Inhalt einer Text-Datei ändern [ERLEDIGT]

Beitrag von brandelh »

MemoRead() und MemoWrit() wir immer wieder betont, soll man NICHT für Binäre Dateien nuten,
wegen möglicher Zeichensatz Umwandlungen dazu kommt das chr(26) Problem beim Schreiben.

Schon zu Clipper Zeiten habe ich mir eine Funktion mit den F-Funktionen geschrieben die das zuverlässig erledigt, heute bekommt man die so mit geliefert ;-)
Gruß
Hubert
Antworten