' schrieb:Wenn Du das VI mit der File-Size und den "Quotient & Remainder" weglässt, dann klappt's. Allerdings kriegst Du dann den Fehler 116 beim Auslesen. ...
Zunächst hierzu: wenn man am Eingang 'Count (1)' vom 'Read From Binary File' nichts anklemmt, liest er ja nur ein Element des Datentyps, den man am 'data type' Eingang definiert hat. Das wäre dann ja korrekt, da es sich bei beidem um 2D-Arrays eines Clusters handelt.
Der Fehler 116 entsteht dadurch, dass die Lesefunktion nicht weiss wieviele Elemente das 2D-Array enthält. Das hat natürlich nichts mit dem 'Count' - Eingang beim Lesen zu tun, sondern mit der boolschen Konstante beim Schreiben am Eingang 'prepend array or string size? (T)', die auf FALSE steht. Hierdurch wird die Größe des Arrays nicht mit in der Datei abgelegt ( würde ich auch in den allermeisten Fällen genauso tun). Die Konstante mal auf TRUE setzen und schon gehts.
' schrieb:... ich möchte ein Array speichern und auch wieder laden können. Daher habe ich mit Hilfe der Funktionen "Write Binary File" und "Read Binary File" aus der LabVIEW-Hilfe mir eine solche Möglichkeit gebastelt. Das Speichern funktioniert wunderbar, allerdings taucht bei der Funktion ein Problem auf. LabVIEW sagt mir, dass die Dimensionen der zu landenden Datei und des angegebenen Dateiformats verschieden sind. Das Dateiformat ist laut LV in der Dimension 1, die angebenen Datei in Dimension 2. Verstehe das nicht, da ich die Konstante des Dateiformats aus der angebebenen Datei erstellt habe?! ...
Das Beispiel sieht soweit ja nicht schlecht aus ^_^ Eine Lösung hat Y-P ja schon aufgezeigt (s.o.) und jetzt weisst Du auch, wie sich der Fehler 116 vermeiden lässt.
Eine andere Lösung auf Deiner Grundlage wäre Folgendes: Wenn am 'data type' Eingang beim 'Read From Binary File' - VI nicht das 2D-Array des Clusters sondern nur der Cluster selbst angeklemmt wird, wird mit jedem 'Count' ein Cluster ausgelesen. D.h., wenn keine Zahl am Count-Eingang angeklemmt ist, kommt genau der angeklemmte Datentyp auch am Ausgang raus. Hier: ein Cluster! Wenn aber eine Zahl bei 'Count' angeklemmt wird, versucht die Funktion diese Anzahl an Clustern aus der Datei zu lesen und gibt diese als 1D-Array von Clustern zurück. Dieses 1D-Array kann jetzt natürlich mit geeigneten Array-Funktionen wieder in die verlangte Form (2D) umgewandelt werden ( z.B. 'Reshape Array'
.
Einzige weitere Schwierigkeit: wie bekomme ich die korrekte Zahl an den Count-Eingang. Entweder man weiss genau, wieviel man hineingeschrieben hat oder man liest so lange einzelne Counts und bastelt die aneinander, bis ein Fehler aus der Funktion zurückkommt. Oder man klemmt eine mehr als genügend grosse Zahl an und bekommt alle gespeicherten Cluster als 1D-Array zurück und lebt damit, dass auf jeden Fall der Fehler 4 'End of file' aus dem 'Read From Binary File' - VI herauskommt. Durchaus nichts ungewöhnliches, da sich mit Error-Clustern ja hervorragend arbeiten lässt
Ich hoffe, das hat ein wenig weitergeholfen.