Registriert seit: 6. Apr 2011
Ort: Berlin
3.070 Beiträge
Delphi 10.4 Sydney
|
AW: Typecasting eines Arrays von Byte und Schreiben in verschiedene Variablen in Delp
24. Feb 2020, 10:26
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.
Um bei deinen Beispiel zu bleiben, dann also so wie in p3(); gezeigt?
Delphi-Quellcode:
program Project1;
{$APPTYPE CONSOLE}
{$R *.res}
uses
System.SysUtils,
System.Types;
type
TAppData = packed record
someInteger: Int32;
someTimestamp: TDateTime;
// usw.
end;
PAppData = ^TAppData;
const
data: TBytes =
[103, 18, 0, 0] // 4711
+
[0, 0, 0, 0, 160, 109, 229, 64]; // 2020, 02, 24
procedure p;
var
appData: TAppData;
begin
appData := TBitConverter.InTo<TAppData>(data);
end;
procedure p2;
var
appData2: TAppData;
begin
appData2 := (PAppData(@data[0]))^;
end;
procedure p3;
var
appData3: TAppData;
begin
appData3.someInteger := (PInteger(@data[0]))^;
appData3.someTimestamp := (PDateTime(@data[4]))^;
end;
begin
try
p;
p2;
p3;
except
on E: Exception do
Writeln(E.ClassName, ' : ', E. Message);
end;
end.
|
|
Zitat
|