Also wenn du wirklich eine Struktur (packed record) hast die sich 1:1 auf die Bytes abbilden lässt die du bekommst dann gibt es das schon fertig mit
TBitConverter
aus
System.Types
:
Delphi-Quellcode:
uses
System.SysUtils,
System.Types;
type
TAppData = packed record
someInteger: Int32;
someTimestamp: TDateTime;
// usw.
end;
procedure p();
const
data: TBytes =
[103, 18, 0, 0] // 4711
+
[0, 0, 0, 0, 160, 109, 229, 64]; // 2020, 02, 24
var
appData: TAppData;
begin
appData := TBitConverter.InTo<TAppData>(data);
end;
Um ganz ehrlich zu sein habe ich das früher auch so gemacht, mir es aber mittlerweile abgewöhnt. Am besten gönnt man sich das Getippe von ein paar Zeilen für die Konvertierung zwischen den rohen Bytes und der Datenstruktur wie man sie in seinem Programm abbilden möchte. Da lässt sich auch wesentlich besser testen und auf Sonderfälle reagieren.