Einzelnen Beitrag anzeigen

mOfl

Registriert seit: 1. Jun 2006
11 Beiträge
 
#7

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

  Alt 1. Sep 2008, 18:08
Zitat von x000x:
Moin moin,
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?
Vielen Dank für die erleuchtende und weiterbringende Antwort! =) Den Weg über das Array geh ich, weil es für mich so einfacher ist, da die Werte nicht die einzigen sind, die gelesen werden. Es werden viele verschiedene Werte in ein Array eingelesen und dann bei Bedarf verarbeitet und nur bei einem bestimmten Funktionsaufruf wird wirklich ein Integer draus.
  Mit Zitat antworten Zitat