@GuaAck: Was du vorgeschlagen hast, habe ich ursprünglich so gehabt (in der "alten" Version arbeitet das ohne Probleme), aber nachdem es in Delphi 2007 nicht mehr wollte, habe ich natürlich andere Wege probiert.
Es ist so, dass nach der Zuweisung sStatus := pStatus^ sind die Daten völlig andere, nicht etwa ein Byte verschoben, Nullen angefügt etc, irgendwie scheint ein völlig anderer Speicherbereich verwendet zu werden, aber ich sehe nicht, warum??? Aber ich probiere mal Copy...
@Bergmann89: Ok, das mit dem Array ist ein fairer Hinweis, aber das war 'eh der quick-n-dirty Versuch und gibt grundsätzlich Probleme. Nicht beim Kopieren des Array, sondern beim casten auf die Struktur... Ich habe die Struktur oben noch in den ursprünglichen Post eingefügt. Es handelt sich eben nicht um ein array, sondern um einen packed record, daher bin ich davon ausgegangen, dass das soweit passen müsste?!? Ich benötige die Daten später nicht mehr, nur die Zuweisung mit dem Cast arbeitet bei mir nicht korrekt. Das gilt auch für die id, in der Tat hatte ich das vorher so, wie du geschrieben hast, bekomme aber völlig andere Werte und hab keinen Schimmer warum??? *snief*
Zur Verdeutlichung:
Delphi-Quelltext
1: 2:
| id := PInteger(@AData)^; id := AData[ 0 ]+ AData[ 1 ] * 256 + AData[ 2 ] * 256*256 + AData[ 3 ] * 256*256*256; |
Wenn ich diese beiden Zeilen ausführe... AData wird dabei mit [ 5, 6, 18, 6 ... ] berichtet, hat id nacheinander die Werte 13348136 und dann 101844485...??? Häh??? Selbst wenn ich die Werte Hex/Bin umrechne hilft mir das null weiter. Was ich allerdings weiß ist, der Inhalt von AData ist korrekt und die zweite id stimmt, die erste nicht. Kleinen Versuch habe ich noch durchgeführt: "id := PLongWord(@AData)^;" macht auch keinen Unterschied... Dass ich hier oben mit LSB/MSB Reihenfolge spiele ist klar, hat mich der Lösung aber bisher nicht für fünf Cent näher gebracht... Ich sehe es einfach nicht?
Stephan