LabVIEWForum.de
Err 74 = Data Structure Corupt - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Err 74 = Data Structure Corupt (/Thread-Err-74-Data-Structure-Corupt)



Err 74 = Data Structure Corupt - gottfried - 09.05.2011 14:49

Hallo

weiß jemand wann dieser Fehler entdeckt wird? 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.

(Array of Cluster und in dieem Cluster habe ich eine Boolean eingefügt und das Ding merkte nichts....hmmm)

Danke

Gottfried


RE: Err 74 = Data Structure Corupt - IchSelbst - 09.05.2011 16:11

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


RE: Err 74 = Data Structure Corupt - gottfried - 09.05.2011 16:19

Aha - wieder was gelernt - danke


RE: Err 74 = Data Structure Corupt - rolfk - 09.05.2011 18:17

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