Einzelnen Beitrag anzeigen

Benutzerbild von x000x
x000x

Registriert seit: 21. Jan 2004
Ort: Bei Hamburg
308 Beiträge
 
Delphi XE2 Professional
 
#4

Re: Little-Endian-DWord zu Integer und zurück

  Alt 1. Sep 2008, 15:06
Moin moin,
Zitat von mOfl:
...Zusätzlich zur allgemeinen Frage also noch die Frage: Wie sieht der äußert raffinierte Befehl rückwärts aus, also von Integer zu Byte-Array oder viel primitiver gefragt - geht das
überhaupt so einfach?...
Ja, es geht genau so einfach:
Delphi-Quellcode:
//..
   groesse := 439041101;
   PInteger(@buffer[0])^ := groesse;
//..
Ein Integer "besteht" ja aus 4 Bytes (SizeOf(Integer) = 4), es ist also - aus sicht des PCs - das gleiche wie ein Array[0..3] of Byte.
Ein PInteger zeigt auf das erste Byte von den 4 Bytes eines Integers. @buffer[0] zeigt ebenfalls auf das erste Byte unseres Arrays.
Wenn wir jetzt dem Compiler mitteilen, das @buffer[0] ein PInteger ist, können wir diesen ganz einfach dereferenzieren und einen Wert
zuweisen.

Was ich bei dir nur nicht verstehe, warum musst du überhaupt den Weg über ein Array[0..3] of Byte gehen? Du kannst die Werte doch direkt in einen
Integer einlesen?
Peter
-= Gruss Peter =-
-= alias x000x =-
  Mit Zitat antworten Zitat