_ReplaceStringInFile

  • Hallo ich brauch mal Eure Hilfe, ich komme nicht weiter.

    Ich habe eine Datei "untitled.txt" in der möchte ich den String "version 9" in "version 7" ändern.

    Wenn ich die Datei mit notepad++ öffne und es händisch ändere und wieder abspeiche funktioniert es.

    In meiner GUI füge ich per Drag and Drop die Datei ein.

    Aber mit _ReplaceStringInFile funktioniert es nicht.

    Ich denke mir, es liegt an der Datei, weil weiter unten in der Datei stehen so komische Zeichen, siehe Anhang.

    Hat jemand eine Idee, wie ich das lösen kann.

    Danke im vorraus.

  • Ohne das ich mir das komplette Script und die genutzte Funktion _ReplaceStringInFile() angesehen habe, musst Du das Ergebnis der Funktion wieder einer Variablen zuweisen und diese auch wieder in die (oder eine neue) Datei zurückschreiben.

    Meine Annahme war falsch: Die Funktion macht dies automatisch. Du must also den Dateinamen (im Beispiel $aFiles[0], bzw. $aFiles[x] per Schleife) an die Funktion übergeben und nicht den Inhalt.

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

  • vom Prinzip her möglicherweise so...

    wobei ich noch nicht verstanden habe, warum der String nicht ersetzt wird !?

    Edit: Mit einer anderen Testdatei geht es. liegt scheinbar am Dateiformat/Kodierung, mit der die Funktion nicht klar kommt....

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

    Einmal editiert, zuletzt von Micha_he (8. Dezember 2021 um 12:21)

  • Hallo Micha_he,

    danke für die Info, aber wie Du auch festgestellt hast funktioniert das nicht.

    Ich denke mir, das liegt an der Datei.

    Die Extension ist eigentlich eine bip Datei (Keyshot), nur die konnte ich nicht als Anhang hochstellen, deswegen als txt.

    Habe hier nur die Extension geändert, als Kodierung ist es eine ANSI.

    Wenn mann sich die Datei im notepad++ anschaut stehen weiter unten so schwaze NUL Zeichen.

    Wie gesagt händisch geht es nur nicht mit _ReplaceStringInFile

    Ich hatte auch das mal probiert, geht auch nett:

    Im ArrayDisplay stehen dann so komische Zeichen.

    Habe auch mal mit:

    Code
    $file = FileOpen($aFiles[0], 512)
    $read = FileRead($file)
    
            _ReplaceStringInFile($read, "version 9", "version 7") ;!!!!!!!!!!!!!!!!

    es versucht und den mode geändert, aber hat auch nichts gebracht.

    Alles sehr seltsam :/

  • Die Konvertierung der binär eingelesenen Daten mit StringReplace() geht aber:

    Code
    $hInFile = FileOpen(@ScriptDir & "\untitled.txt", 16) ; Binary Read
    $data = BinaryToString(FileRead($hInFile))
    FileClose($hInFile)
    
    $data = StringReplace($data, "version 9", "version 7")
    
    $hOutFile = FileOpen(@ScriptDir & "\untitled_out.txt", 2 + 16) ;Binary Write
    FileWrite($hOutFile, $data)
    FileClose($hOutFile)

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

  • Bei mir funktioniert es auch ohne BinarytoString.

    So in etwa oder?


  • Must Du mal Eingangs- und Ausgangsdatei vergleichen, ob dabei die restlichen Bytes nicht verändert werden.

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

  • Man seit Ihr schnell.

    Dein Script funktioniert Micha_he.

    Das von MojoeB funktioniert bei mir nicht.

    Heute Nachmittag hatte ich auch die Idee mit Binary Read, nur habe ich Binary Write vergessen.

    Super Arbeit und Danke für Eure Hilfe.