Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
22.09.2024, 18:15 (Dieser Beitrag wurde zuletzt bearbeitet: 11.10.2024 19:02 von jg.)
ich stehe vor einem Problem bei der Verarbeitung einer Log-Datei und hoffe auf eure Unterstützung.
Ich lese eine Log-Datei ein und ersetze darin bestimmte Zeilen durch vordefinierte Strings. Grundsätzlich funktioniert das Ersetzen wie gewünscht, allerdings stellt sich folgendes Problem: Zunächst werden alle Zeilen ohne Änderungen eingelesen, erst danach erfolgt die Ersetzung der gewünschten Zeilen. Dies führt dazu, dass die Datei am Ende doppelt so groß ist wie ursprünglich. Ich vermute, dass die Datei zweimal geschrieben wird, ohne die ursprünglichen Inhalte zu überschreiben, aber ich kann den Fehler in meinem Code nicht finden.
Könnt ihr mir eventuell helfen, den Grund für dieses Verhalten zu identifizieren?
Vielen Dank im Voraus!
Beste Grüße
Anzeige
22.09.2024, 22:16 (Dieser Beitrag wurde zuletzt bearbeitet: 22.09.2024 23:05 von Mechatroniker28.)
Zitat:Zunächst werden alle Zeilen ohne Änderungen eingelesen, erst danach erfolgt die Ersetzung der gewünschten Zeilen. Dies führt dazu, dass die Datei am Ende doppelt so groß ist wie ursprünglich. Ich vermute, dass die Datei zweimal geschrieben wird, ohne die ursprünglichen Inhalte zu überschreiben, aber ich kann den Fehler in meinem Code nicht finden.
Ich kann es leider in deinem Code auch nicht sehen, da ich LV2019 bevorzuge…
(Wenn du jetzt mit LV2020 arbeitest, könntest du bitte dein Profil anpassen!)
Zu deiner Frage:
Schließt du die Datei nach dem EInlesen?
Öffnest du die Datei zum Schreiben erneut - und setzt dann auch explizit den Modus "Create or Replace"?
Oder manipulierst du explizit die Datei, sodass die Filegröße auf 0 Byte gesetzt wird und du den FilePosition-Pointer auf "0 Byte vom Anfang" setzt?
(22.09.2024 18:15 )Mechatroniker28 schrieb: Könnt ihr mir eventuell helfen, den Grund für dieses Verhalten zu identifizieren?
Guten Morgen,
hast du mal vorher und nachher verglichen? Oder das gleiche mit einer kleinen Datei (2 Zeilen) durchlaufen lassen?
Das 2te war zumindest mein Versuch und damit hab ich festgestellt, dass 'Write to text file' den Text hinten anhängt.
Vorschlag: Die geänderte Datei unter einem neuen Namen speichern ( 'Open File' mit 'Create' ).
Alternativ die Datei originaldatei verscheiben und eine neue mit dem gleichen Namen erstellen:
Justieren ist dem Gerät sagen was es anzeigen soll, kalibrieren ist die Kontrolle dieser Anzeige. Eichen ist ein längerer Prüfprozess und darf nur das Eichamt!
23.09.2024, 08:51 (Dieser Beitrag wurde zuletzt bearbeitet: 11.10.2024 19:02 von jg.)
(23.09.2024 08:51 )Mechatroniker28 schrieb: Da sind aber noch 2 Fehler in der Ausgabe Datei, an 2 Stellen hat er die Änderung nicht übernommen.
Sieht so aus als ob du mit nem Leerzeichen am Ende suchst, das findet er natürlich nicht, weil es das in der Textdatei nicht gibt.
Grüße Timo
Edith meint: Beim Write to file noch nen replace als konstante einfügen hilft zur Übersicht.
Justieren ist dem Gerät sagen was es anzeigen soll, kalibrieren ist die Kontrolle dieser Anzeige. Eichen ist ein längerer Prüfprozess und darf nur das Eichamt!
Du kannst nen Pfad als eingang nehmen und mit 'Recursive File List.vi' in 'Datei I/O' - 'Adv File funtions' dir eine liste aller Dateien in dem Ordner ausspucken, man kann auch ein 'pattern' angeben, zB nur alle *.log Dateien.
Grüße Timo
Justieren ist dem Gerät sagen was es anzeigen soll, kalibrieren ist die Kontrolle dieser Anzeige. Eichen ist ein längerer Prüfprozess und darf nur das Eichamt!