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!
RE: Bestimmte Daten aus csv Datei in Array schreiben
Danke schonmal an Euch =)
Ich will das Array löschen, welches mit der FOR Schleife erzeugt wird. Aber erst nachdem man z.b. auf Löschen klickt. Ich werde die Ratschläge versuchen am Montag umzusetzen.
RE: Bestimmte Daten aus csv Datei in Array schreiben
Das Programm wird natürlich am Einfachsten beim zeilenweisen Einlesen, d.h. immer nur 1 Zeile. Es ist ein hier leider nicht auszurottendes Vorurteil, dass das Programm wegen der vielen Lesezugriffe auf die mechanich funktionierende Disk dann enorm langsam ist. Dem ist aber nicht so, denn a) haben die heutigen HDs einen eingebauten Puffer (für Lesen und Schreiben) von mindestens 2 GB, und b) stellt auch das Betriebssystem (Windows) einen solchen Puffer zur Verfügung. Wie sich die beiden Puffer untereinander abstimmen, weiß ich nicht, interessiert auch nicht, man muss nur so viel wissen, dass diese Puffer existieren und daß man zur Beschleunigung von zeilenweisen Lese- und Auswertevorgängen nicht noch einen selbstgebastelten dritten Puffer braucht, dessen Inhalt man dann zur zeilenweisen Auswertung jedes Mal aufdröseln müßte.
Test übrigens ganz einfach: Gesamte Datei zeilenweise Lesen, ohne die Zeilen zu speichern, und die Zeitdauer feststellen. Dann immer 10 Zeilen lesen, und festellen, dass das nicht wesentlich etwas bringt.
RE: Bestimmte Daten aus csv Datei in Array schreiben
(21.03.2014 16:27 )GerdW schrieb: Hallo Serial,
Zitat:Ich will das Array löschen, welches mit der FOR Schleife erzeugt wird. Aber erst nachdem man z.b. auf Löschen klickt
Pseudocode:
Code:
IF "löschen geklickt"
THEN array:=[]
Hi, da bin ich wieder. Ich habe mich am Wochenende rangesetzt und bin auch ziemlich schnell auf eine Lösung gekommen, um das bereits erstellte Array zu löschen. So kann man nun eine neue Messwertdatei auswählen und das Array "neu" beschreiben.
Ich habe das einfach mit einer Konstante am Eingang der CASE Struktur gemacht. So wird vor dem erneuten einlesen ein "0" Array erstellt (als Einang für die CASE-Struktur).
Ich habe mal ein VI hochgeladen, welches dem entspricht (für die Leute, die vielleicht ähnliches Problem hatten)
RE: Bestimmte Daten aus csv Datei in Array schreiben
(24.03.2014 08:31 )GerdW schrieb: Hallo Serial,
damit hast du den Hinweis zu den bisher uninitialisierten Schieberegistern endlich umgesetzt!
Ich würde es so machen:
Hey,
das habe ich eben fertig gestellt. Bevor es in die FOR-Schleife geht wird ein 1D Array initialisiert und dies dann in die FOR Schleife als "Startarray" geschickt. Dies wird dann nach und nach ersetzt.
Jetzt noch eine Frage.
Reicht es, wenn ich das Array mit der Konstante am Eingang der FOR-Schleife initialisierte oder muss ich es mit dem VI "Array initialisieren" machen, weil dort ja schon die Anzahl der Elemente berücksichtigt wird? Warum ist es allgemein besser ein Array bevor es mit Messdaten beschrieben wird zu erstellen? Wieso kann der Rechner da besser mit arbeiten?
RE: Bestimmte Daten aus csv Datei in Array schreiben
(24.03.2014 08:46 )GerdW schrieb: Hallo Serial,
das, was du da in deinem VI machst, ließe sich auch so (einfacher) umsetzen:
Danke, da hast du recht . Mir ging es aber nur um das Prinzip. Ich werde damit nachher Messdaten aus einer csv Datei in ein Array schreiben.
Zum Hauptproblem:
Auch wenn ich ein Array vorinitialisiere und dann das VI "Array ersetzen" anwende, ändert das nichts an der Geschwindigkeit, in der die 5 Millionen Messdaten in das Array geschrieben werden. Dabei verwende ich immernoch das VI "Aus Tabellenkalkulationsdatei lesen". Ist dieses VI für die Geschwindigkeit verantwortlich ?
RE: Bestimmte Daten aus csv Datei in Array schreiben
So da bin ich wieder.
Jetzt funktioniert alles so, wie es soll. Die Messwerte werden schön eingelesen und dann dargestellt. Nur bleibt noch ein kleines weiteres Problem.
Ich muss im Programmcode oder manuell auf der Bedienoberfläche die länge des Headers eingeben (Anzahl der Zeilen).
In meiner csv Beispieldatei belegt der Header 10 Zeilen. Im Header steht immer ein String, gefolgt von Zahlen in der jeweiligen Zeile.
Erst wenn in jeder Spalte Zahlen sind, ist der Header zuende.
Ich möchte irgendwie schaffen, dass mein Programm automatisch den Übergang von Header zu Wert erkennt und mir zeigt, wieviele Zeilen der Header hat.
MfG
Serial
PS: Meine momentane Lösung sieht so aus, dass ich Standardmäßig 10 Zeilen eingebe oder einfach 100 Zeilen. Ist bei einer Anzahl von 5 Mio Messwerten dann auch egal, wenn die ersten 90 abgeschnitten werden.