Einzelnen Beitrag anzeigen

Zoot

Registriert seit: 30. Jan 2006
Ort: Hessen
113 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Deserialisierung von einem Integer-Wert

  Alt 13. Jan 2016, 16:05
Das kann so nicht funktionieren.

Ein string[4] in Delphi 5 stellt eine Speicherstruktur von 5 Byte dar - 1 für die Länge und vier Byte für die Daten. Aus dem Copy entsteht in s ein String der Länge 4 mit dem Inhalt "00 00 12 34". Der Speicherbereich sieht also so aus: 04 00 00 12 34

Du castest einen Pointer auf s in einen PInteger. Damit werden die ersten 4 Bytes des Bereichs als Integer (übrigens Little Endian) interpretiert. 04 00 00 12 entspricht somit $12000004 = 301989892.

Erschwerend kommt hinzu, dass die Ziffern "1234" nicht etwa einem Speicherinhalt von 1234 entsprechen.
  Mit Zitat antworten Zitat