LabVIEWForum.de - nur 3 Wertepaare aus Textdatei lesen

LabVIEWForum.de

Normale Version: nur 3 Wertepaare aus Textdatei lesen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hi,

mein Programm im Anhang liest Daten aus einer Textdatei mit n-Zeilen!

Jetzt möchte ich aber gerne, dass mein Programm mir das Wertepaar der 1.Zeile ,

der mittleren Zeile und der vorletzten Zeile, einer beliebig

langen Textdatei ,ausliest und in ein 1D-Array legt!

Habe es leider noch nicht geschafft!

Wie kann ich das realisieren?

Dank und Gruß

jameson
Hi,

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
Hi,

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...
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.
' schrieb:Hi,

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.
' 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...

Gruss
Uli
Hi,

versuchs mal damit:

[attachment=3525][attachment=3526]

Gruss
Achim
' schrieb:Hi,

versuchs mal damit:

[attachment=29594:attachment][attachment=29595:attachment]

Gruss
Achim

Hi Achim,

da ich morgen erst wieder am Rechner bin, kann ich es erst dann ausprobieren!
Aber jetzt schon mal danke!

MfG
Hi Jameson,

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...

[attachment=3528]

Gruss
Achim
Seiten: 1 2
Referenz-URLs