String Array zur Laufzeit wandeln und einem Cluster zuführen - Druckversion +- LabVIEWForum.de (https://www.labviewforum.de) +-- Forum: LabVIEW (/Forum-LabVIEW) +--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein) +--- Thema: String Array zur Laufzeit wandeln und einem Cluster zuführen (/Thread-String-Array-zur-Laufzeit-wandeln-und-einem-Cluster-zufuehren) |
String Array zur Laufzeit wandeln und einem Cluster zuführen - hTed - 27.11.2014 23:46 Hallo LV Gemeinde, ich möchte zur Laufzeit ein String Array in unterschiedliche Datentypen zerlegen und daraus ein Cluster erstellen. Dazu lesen ich eine *.csv Datei ein und verwende das LV 'read from spreadsheet file.vi'. Dieses VI liefert mir auch die erste Zeile der *.csv Datei. Darin habe ich definiert, in welchen Datentyp ich die String Werte konvertieren möchte. Nur leider bekomme ich es nicht gebacken, mir zur Laufzeit ein passendes Cluster zusammen zubauen. Könnt ihr da helfen? RE: String Array zur Laufzeit wandeln und einem Cluster zuführen - GerdW - 28.11.2014 08:02 Hallo hTed, THINK DATAFLOW setzt voraus, dass alle Datentypen schon beim Editieren bekannt sind. Ergo: du kannst zur Laufzeit keinen neuen Cluster aus beliebigen Datentypen erstellen! Lösung: Speichere deine Daten in einem generischen Format im Cluster - mitsamt der Information über den enthaltenen Datentyp. Wenn du dann an die Daten heranwillst, musst du eine (polymorphe?) Wrapper-Funktion erstellen, die dir die gewünschten Daten ausliest und konvertiert… P.S.: In deinem "boolean"-Case kann man statt der Case-Struktur auch eine einfache ">0"-Funktion verwenden… P.P.S.: Noch eine Idee: Du kannst deine Daten auch in Variant-Attributen speichern, hier bist du bei der Wahl des Datentyps recht frei. Aber beim Auslesen musst du auch schon vorher wissen, welcher Datentyp in jedem Attribut verwendet/gespeichert wurde… RE: String Array zur Laufzeit wandeln und einem Cluster zuführen - Lucki - 28.11.2014 10:51 Wie Gerd schon sagte, der Cluster muss zur Laufzeit mit all seinen Elementen bereits vordefiniert sein. Kein Problem wäre es, die einzelnen Zeilen mit allen 39 Elementen in einen Cluster mit 39 Elementen zu konvertieren, wobei dann die Datenttypen der Clusterelemente unterschiedlich sein können. Es wäre auch möglich, dass, wenn in einem Element nichts drin ist, dieses verborgen wird. Die Tabelle dürfte sich dann aber nicht ändern, d.h die erste Zeile mit den Konvertierungsinformationen müssste immer identisch sein - und damit wäre die Zeile eigentlich überflüssig. Wenn Du so etwas willst, dann sage es und Dir wird geholfen. RE: String Array zur Laufzeit wandeln und einem Cluster zuführen - hTed - 28.11.2014 11:51 Hallo GerdW und Lucki, vielen Dank für eure Antworten. Ich hab es verstanden, es geht nicht zur Laufzeit. Eigentlich wollte ich ein universelles VI schreiben, dass ich in späteren Projekten mal wieder verwenden kann um flexibel Daten von der Festplatte einzulesen. Welches generische Format bietet LV eurer Meinung dazu an? Gruß hTed RE: String Array zur Laufzeit wandeln und einem Cluster zuführen - GerdW - 28.11.2014 12:41 Hallo Ted, du kannst entweder Variants verwenden - oder Strings (oder gleichwertige U8-Arrays). Bei Strings ist man nicht auf "human-readable ASCII" beschränkt, sondern kann beliebige Bytes ablegen… RE: String Array zur Laufzeit wandeln und einem Cluster zuführen - hTed - 28.11.2014 13:34 Ich werde es so machen das ich schon im Code bestimme in welcher Array - Spalte für ein Datentyp vorhanden ist. Dies ist nicht so flexibel, aber das muss nach dem LV Grundsatz funktionieren. Besten Dank. RE: String Array zur Laufzeit wandeln und einem Cluster zuführen - Lucki - 28.11.2014 14:44 Es sollte aber auch die Möglichkeit erwogen werden, überhaupt nichts zu machen und es bei der Texttabelle/dem Textarray zu belassen. Denn ein Textstring kann ja jedes Datenformat beschreiben - das ist ja jetzt auch bei Dir schon der Fall. (Man könnte beim Binärformat noch "false" und "true" statt "0" und "1" nehmen, damit es nicht mit einem Zahlenformat verwechselt werden kann) Beim Lesen von Text gibt es die Möglichkeit des zeilenweisen Einlesens, was will man mehr? Was ich sagen will: Wenn Du die Tabelle wie vorgeschlagen in irgendnein anderes "generisches Format" konvertierst und speicherst, dann ist nicht von vornherein gesagt, dass Du damit einen eleganteren Zugriff auf die Daten hast als mit der jetzigen CSV-Tabelle. Das wäre aber der Prüfstein, an dem Deine Bemühungen dann gemessen werden müssten. |