Gibt es eine elegantere Möglichkeit dafür?
Definitiv! Sofern die Byte-Order garantiert gleich ist, kannst du auch einfach direkt den Datentyp auslesen, den du brauchst (z.B. Int16, Int32, ..) bzw. den Buffer dahingehend casten mit
L := PInt16(@FReceiveBuffer[9])^
. Eventuell macht es ja sogar Sinn für jedes Paket ein
struct
zu deklarieren (vorrausgesetzt die Struktur ist immer gleich groß) und dann direkt in einem Rutsch auszulesen.