Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Record to Hex (https://www.delphipraxis.net/206309-record-hex.html)

tomkupitz 8. Dez 2020 14:59

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

Neutral General 8. Dez 2020 15:09

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

tomkupitz 8. Dez 2020 15:40

AW: Record to Hex
 
TBytes ist statisch.

Neutral General 8. Dez 2020 15:53

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 07:22 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz