(09.05.2011 16:11 )IchSelbst schrieb: (09.05.2011 14:49 )gottfried schrieb: Ich lese eine Cluster binär ein. Wenn die Strukturdefinition mit der Datei nicht zusammenstimmt würde ich mir diesen Fehler erwarten... er kommt aber nur manchmal, selbst wenn man z.B. eine Boolean in eine Strukturdefinition zusätzlich einbaut die in der Datei nicht vorhanden ist.
Cluster haben (bestimmt) ein Alignment (z.B. 16Byte oder auch nur 4). Alignment bedeutet, dass der Kompiler aus Optimierungsgründen den Cluster von sich aus z.B. 16Byte groß macht, obwohl der Anwender (Programmierer) z.B. nur 13 Byte braucht. Rüstet der Programmierer jetzt 1 Byte nach passt das noch in den bestehenden Cluster ...
Nicht in LabVIEW. LabVIEW verwendet Packed Format. Aber das Einfügen eines Boolean braucht nicht direkt einen Fehler zu verursachen. LabVIEW macht zwar beim Unflatten eine Plusibilitätskontrolle, aber das ist nicht so streng. Wenn ein Byte oder so am Ende fehlt dann wird das meist einfach mit einem NULL Byte angefüllt. Aber wenn durch die Verschiebung der Bytes zum Beispiel Array Sizes unsinnig gross werden reklamiert die Unflatten Funktion. Da wird nämlich schon getested ob der angegebene Size im Stream überhaupt in die verbleibenden Daten hineinpasst und wenn dem nicht so ist, bricht LabVIEW mit diesem Fehler ab, um Out of Memory Situationen zu vermeiden.