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!
aber zwar nur ein kleines aber nerviges Problem bei der Speicherung von Messdaten in einem Textdokument.
Ich öffne eine Textdatei beim starten der Messung, danach werden viele Kopfdaten, die mit einer Zeilenendkonstante voneinander getrennt sind auf einmal in diese Datei geschrieben. Später werden dann immer ein Messwertpaket die mit Tab voneinander getrennt sind in einen neue Zeile angehängt. Jetzt will ich beim beenden der Messung die kopfdaten nochmal an den Anfang schreiben, d.h. aktualisieren. Dazu setz ich die cursorposition auf den anfang und überschreib nur die kopfdaten genauso wie ich sie am anfang speichere........jetzt kommt mein problem.....nachdem dem nochmaligen speichern löscht es mir teile aus der 1. Messwertreihe.......ich weiss ehrlich gesagt nicht warum. Mein Programm kann ich leider nicht mit anhängen da es zu umfangreich ist und den Rahmen sprengen würde.
Ich stell aber die Textfiles mal rein. Vielleicht fällt euch da ja was auf. Muss ich die Messwerte mit einem bestimmten trennzeichen vielleicht schreiben, damit beim überschreiben der kopfdaten das nicht passiert???
sehe ich es richtig, dass dir das 1. Zeichen fehlt bei deinen Messwerten? Ohne dein VI zu sehen ist es natürlich schwer, nachzuvollziehen, was da passiert (evtl, kannst du zumindest ein screenshot machen von dem bereich wo du speicherst und co oder eben doch das vi hochladen). Hast du die Schreibposition evtl auf 1 gesetzt anstatt auf 0??
LG
Torsten
"Über Fragen, die ich nicht beantworten kann, zerbreche ich mir nicht den Kopf!" (Konrad Zuse)
Hey....danke gleichmal für die schnelle antwort. werd versuchen gleich noch ein paar Screenshots hochzuladen!!
schreibposition ist sicher auf 0, denn der letzte wert vor den messwerten steht an der gleichen stelle......nur wird irgendwie ein teil der 1. Messwertreihe überschreiben......wenn ich das gleiche nochmal mache....fehlt die ca. die hälfte der 1. Messwertreihe.
wollte gerade noch die Screenshots machen...aber das wird zu umständlich.....bastel gleich meinen aufbau zusammen und stell ihn dann rein!!!
so ein Überschreiben funktioniert nur dann richtig, wenn beide Header byteweise gleich lang sind!
Das sind sie bei deinen Beispielen nicht, in der Zeile vor dem Datum steht bei der ersten Datei nur eine 0, in der zweiten eine 26, also ein Zeichen und somit ein Byte mehr.
Deshalb wird dir hier die erste Null der Messdaten überschrieben.
Gruß, Jens
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
danke jens....das erklärt es wahrscheinlich. Dann müsste ich beim abschluss der messung quasi die messdatei nochmal komplett einlesen........werte verändern und nochmal komplett schreiben. Richtig??
stell trotzdem nochmal meinen schreibprozess hier rein.
danke.
22.06.2009, 12:05 (Dieser Beitrag wurde zuletzt bearbeitet: 22.06.2009 12:10 von jg.)
Die andere ist skizziert, du musst bei beiden Schreibvorgängen genau dieselbe Anzahl Bytes/Zeichen schreiben, nur dann funktioniert das.
Du musst dir das so vorstellen, der File exisitiert ja schon im "Binärformat" auf der Festplatte. Durch das Setzen der Schreibposition wird jetzt genau das eine Byte an dieser Stelle überschrieben. Und wenn du beim zweiten Mal mehr Bytes schreibst, dann wird halt was überschrieben. Man darf bei sowas halt nicht davon ausgehen, dass das File-Schreiben zeilenweise funktioniert, nein, es funktioniert halt immer zeichenweise.
Analogie: Stell mal in einem Binär-Editor den Modus "Überschreiben" statt "Einfügen" ein, und tippe dann mal was neues rein!
Gruß, Jens
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
ok.....da ich aber am anfang noch nicht weiss wieviel zeichen ich evtl hinzufügen muss....bleibt mir quasi nur die möglichkeit die datei zu lesen mit "Tabellenstring nach array".....ich verändere bestimmt positionen im Array.....und schreib es genauso wieder zurück! Dann wär das die optimale lösung. richtig?
kannst du denn nicht einfach nur die daten schreiben, dann nur die daten lesen und vor die daten den kopf setzen und wieder alles schreiben? warum willst du unbedingt den header vorher als "platzhalter" reinsetzen?
jenachdem wie viele daten du sammelst kannst du auch nur am ende schreiben und vorher alle daten in einem array oder ähnlichem sammeln.
oder du sorgst dafür, dass immer exakt gleich viele zeichen in der datei sind (werte mit nachkommastellen auffüllen und ähnliches)
z.b.
006,456
103,300
000,000
LG
Torsten
"Über Fragen, die ich nicht beantworten kann, zerbreche ich mir nicht den Kopf!" (Konrad Zuse)
' schrieb:Gibt es denn analog dazu unter LV keine Möglichkeit zum "Einfügen"? War ich irgendwie stark von ausgegenagen. Gefunden habe ich es allerdings nicht.
Nö, gibt es nicht. Wie auch? Wenn der File mal als Bytestream auf der HDD angelegt ist, dann kannst du nur das Byte an der bestimmten Fileposition durch ein anderes Byte überschreiben. Einfügen geht nur durch komplettes Einlesen und Neuschreiben!
' schrieb:oder du sorgst dafür, dass immer exakt gleich viele zeichen in der datei sind (werte mit nachkommastellen auffüllen und ähnliches)
Das habe ich doch schon 2mal erzählt, ersetzen geht nur bei exakt gleicher Größe der geschriebenen Strings (inkl. Zeilenumbrüche!!)
Gruß, Jens
P.S.: Bei Ini-Files ist das anders, da kann man was einfügen/ersetzen/löschen. Die werden aber meines Wissens nach bei File-Close immer komplett neugeschrieben!
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!