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!
Text Dateien können nicht Zeilenweise angesprungen werden, nur mit einem Byte Offset.
Die Zeilen werden nur durch end of line erkannt, d.h. du musst das komplette File weglesen um zur vorletzten Zeile zu gelangen, erst dann könntest du dir die "Zeilenmitte" berechnen.
Je nach größe kannst du das File komplett in ein Array laden, oder du liest die Zeilen nur in einer For-Schleife weg und verwirfst sie gleich wieder, dauert bei Dateien unter 10MB nicht allzulang, darüber gehts aber dann in den Sekunden bereich...
Alternativ könnte bei der Speicherung der Offset in Bytes mit abgespeichert werden, um danach direkt wieder dorthin springen zu können...
Gruss
Uli
04.10.2006, 13:51 (Dieser Beitrag wurde zuletzt bearbeitet: 04.10.2006 14:02 von Achim.)
such mal das VI "Spreadsheet String to Array", dass sollte dir helfen. Aus dem Array kannst du dann mit "Index Array" (einzelne) Zeilen extrahieren. Mit dem VI "Array Length" kannst du die Größe feststellen, und dann "-1" und du hast die vorletzte Zeile. Auf ähnliche Weise kannst du auch die mittlere Zeile rausfinden...
Sorry, konnte deine Anhänge irgendwie nicht runterladen...deswegen hab ich darauf keinen Bezug genommen!
Gruss
Achim
PS: Hab mir grade mal dein File "XY_Koordinate.txt" angeschaut...du musst beim Erstellen dieser Files zwischen den einzelnen Elementen z.B. einen "Tab" oder ein anderes "Delimiter-Zeichen" angeben, dann dürfte alles viel einfacher sein...
"Is there some mightier sage, of whom we have yet to learn?"
"Opportunity is missed by most people because it is dressed in overalls and looks like work." (Thomas Edison)
Brauchst du die Angaben "X" und "Y" im File wirklich? ist doch nur Overhead, der die Datei vergrößert... Ich würde die lieber als "Header-Zeile" schreiben, dann kann man die für die Verarbeitung einfach ignorieren und die Werte aus den Zeilen direkt in ein numerisches Array schreiben. Ansonsten musst du nämlich erst in ein String-Array schreiben, weil die numerischen Felder mit den Buchstaben nix anfangen können. Alternativ machst du dazwischen auch ein Trennzeichen, dann verwendet man eben nur die Spalten mit den Zahlen.
"Is there some mightier sage, of whom we have yet to learn?"
"Opportunity is missed by most people because it is dressed in overalls and looks like work." (Thomas Edison)
Text Dateien können nicht Zeilenweise angesprungen werden, nur mit einem Byte Offset.
Die Zeilen werden nur durch end of line erkannt, d.h. du musst das komplette File weglesen um zur vorletzten Zeile zu gelangen, erst dann könntest du dir die "Zeilenmitte" berechnen.
Je nach größe kannst du das File komplett in ein Array laden, oder du liest die Zeilen nur in einer For-Schleife weg und verwirfst sie gleich wieder, dauert bei Dateien unter 10MB nicht allzulang, darüber gehts aber dann in den Sekunden bereich...
Alternativ könnte bei der Speicherung der Offset in Bytes mit abgespeichert werden, um danach direkt wieder dorthin springen zu können...
Gruss
Uli
Hallo,
was ist ein Byte Offset?
Halte die Variante für gut das ich erst das komplette Textfile einlesen lassen und dann meine Werte
rausfische.
War auch meine Idee ,aber ich weiß nicht welche VI´s ich benutzen kann / muss!?
Den ByteOffset kannst du nur verwenden, wenn du deine Daten als Binärdateien schreibst (Write to Binary File.vi)...dann kannst du sie aber nicht mehr als "Klartext" lesen/anschauen. Das würde ich in deinem Fall wohl nicht machen.
"Is there some mightier sage, of whom we have yet to learn?"
"Opportunity is missed by most people because it is dressed in overalls and looks like work." (Thomas Edison)
' schrieb:Den ByteOffset kannst du nur verwenden, wenn du deine Daten als Binärdateien schreibst (Write to Binary File.vi)...dann kannst du sie aber nicht mehr als "Klartext" lesen/anschauen. Das würde ich in deinem Fall wohl nicht machen.
Nein, Byte Offset geht auch bei stink normalen Text datein.
Text dateien werden Zeichenweise gelesen, ein Zeichen entpspricht 1 Byte (ASCII code 8bit pro dargestelltem Zeichen).
Der Byte offset gibt also lediglich an an welchem Byte, sprich Zeichen man sich gerade im Text-File befindet.
Schreibst du die Datei mit einer festen anzahl Zeichen pro Zeile + End of line, könntest du dir daraus auch den offset Berechnen...
aber die einfache Variante mit String lesen und String to array würde bei dir wahrscheinlich ausreichen...
sehe grade, dass du LV7.1 hast, darum hier nochmal das VI runterkonvertiert. Es gab allerdings wieder mal ein paar Konvertierungsprobleme, schau halt mal ob's funzt...