LabVIEWForum.de
Stelle in .txt Datei suchen und schreiben - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: Datenbank & File IO (/Forum-Datenbank-File-IO)
+---- Thema: Stelle in .txt Datei suchen und schreiben (/Thread-Stelle-in-txt-Datei-suchen-und-schreiben)



Stelle in .txt Datei suchen und schreiben - GT123 - 30.04.2010 13:31

Hallo nach langem hin u. her probieren frage ich doch nun einmal hier im Forum.

Ich möchte in einer bestehenden .txt Datei einen Parameterwert überschreiben.
D.h. für mich nach dem Schlüsselwort config.serial suchen und das dahinter überschreiben.
Ich habe die Datei einmal angehängt (Ausschnitt).

config.serial comxxxx

Dieses com soll mit dem richitgen Wert ersetzt werden.

Wie suche ich nun genau nach der Stelle und überschreibe auch genau dies?
Wie ich den Pfad der .txt Datei definieren muss ist klar.
Vielen Dank schon einmal


Stelle in .txt Datei suchen und schreiben - jg - 30.04.2010 13:50

Eine Stelle in einem txt-File überschreiben, dass ist so eine Sache. Wenn du jetzt ein Byte mehr oder weniger schreibst, dann zerstörst du dir deinen ganzen txt-File.

Ich würde mich an deiner Stelle mit den Config-File-VIs beschäftigen. Da erledigt die dahinterliegende Library für dich, wenn du einen Schlüssel/Key ersetzt.

Gruß, Jens


Stelle in .txt Datei suchen und schreiben - GT123 - 30.04.2010 13:52

Hallo Jens

dass Problem ist das die Config.txt Datei nicht geändert werden kann, da sie für mehrere Applikationen erstellt wurde...
leider
Das mit dem Configfile habe ich mir bereits angesehen.
Nur ist eben die vorhanden Parameterdatei schon so...


Stelle in .txt Datei suchen und schreiben - jg - 30.04.2010 13:59

Dann wäre mein Vorgehen:
- die gesamte Datei einlesen, am besten so, dass jede Zeile in einem Array of String landet.
- die nötigen Änderungen machen (In For/While-Schleife nach dem Key-Wort suchen, dann diesen String entsprechend ersetzen).
- die gesamte Datei wieder (im Replace-Modus) schreiben.

Gruß, Jens


Stelle in .txt Datei suchen und schreiben - GT123 - 30.04.2010 14:02

Ok, danke mal vorerst, ich werd mal schauen ob ich das irgendwie gebacken bekomme.
Schönes Wochenende


Stelle in .txt Datei suchen und schreiben - SeBa - 30.04.2010 15:00

Da hab ich mal angefangen und wurde unterbrochen... ^_^

Aber jetzt hab ich mir nochmal 10 Minuten Zeit genommen und das kommt dabei raus:

Lv80_img[attachment=26129]

[attachment=26127][attachment=26128]
EDIT ON
Das Überprüfen der Größe des Change-Arrays solltest du weglassen. Der Gedanke dahinter war gut, doch wenn das Array leer ist und noch Textzeilen kommen, werden die verschluckt.
EDIT OFF

Ich bin einfach mal davon ausgegangen, dass wenn du einen Wert ändern willst... willst du bestimmt auch mal mehrere ändern.

Das Überschreiben der original Datei musst du noch programmieren.


Gruß SeBa


PS:
Ich würd dir empfehlen immer ein Backup der original Datei zu machen. Dann kannst du immer zur letzten Version gehen, falls was schief läuft.


Stelle in .txt Datei suchen und schreiben - GT123 - 03.05.2010 08:07

Hallo zusammen,

ich habe jetzt einmal das Prg. von SeBa weiterentwickelt, siehe Anhang.
(die For-Schleifenbedingung geht in 8.6 nicht, deswegen While)

Funktioniert soweit, was noch nicht einwandfrei ist, ist dass wenn ein Therm ersetzt wird es mit dem Seitenumbruch irgendwie
Probleme bereitet. An was kann es noch liegen...


Stelle in .txt Datei suchen und schreiben - SeBa - 03.05.2010 08:53

Du beendest deinen ersetzten String mit einer Wagenrücklauf-Konstanten.. du meinst aber eine Wagenrücklauf&Zeilenvorschub-Konstante.


Gruß SeBa


Stelle in .txt Datei suchen und schreiben - GT123 - 03.05.2010 12:01

Aha ok,

habe es nun angepasst...
Was mir noch aufgefallen ist, wenn ich com6 reinschreibe, bleibt am Schluss des txt files nach der Bearbeitung ein Rest.
Das sind noch die letzten Stellen des alten Files, wie kann ich zuerst alles löschen und dann aus dem Array reinschreiben?


Stelle in .txt Datei suchen und schreiben - jg - 03.05.2010 12:12

' schrieb:(die For-Schleifenbedingung geht in 8.6 nicht, deswegen While)
Natürlich geht das in 8.6, das war eine der Neuerungen bei dieser LV-Version:
[attachment=26168]

Gruß, Jens