![]() |
Record to Hex
Hallo,
ich habe type TBytes = array[0..16] of Byte; TTest = packed record a: Integer; b: TBytes; c: Integer; end; und konvertiere den Record in einen Hex-String: function MemToHex(mem: Pointer; len: Integer): AnsiString; var i: Integer; pb: PByte; begin result:=''; pb:=mem; for i:=0 to len-1 do begin result:=result+IntToHex(pb^, 2); inc(pb); end; end; ... begin ZeroMemory(@t, sizeof(TTest)); t.a:=1; t.c:=3; s:=MemToHex(@t, sizeof(TTest)); ... end; Der String sieht so aus (hier mal aufgeteilt): 01000000 0000000000000000000000000000000000000000 03000000 Habe ich einen Denkfehler? Müsste Zeile zwei hier nicht nur 34 Zeichen haben? Danke und beste Grüße |
AW: Record to Hex
TBytes ist ein dynamisches Array also ist im Record nur der Pointer zum Array Inhalt. Du kannst es so also nicht machen
|
AW: Record to Hex
TBytes ist statisch.
|
AW: Record to Hex
Ah hab die Definition übersehen (unglückliche Namenswahl für den Typ!).
Habs bei mir ausgeführt und ich bekomme für das array die erwarteten 34 Bytes 01000000000000000000000000000000000000000003000000 01000000 0000000000000000000000000000000000 03000000 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:33 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz