Ich versuche, einen GUID-Wert als binary
Wert in der Registrierung in Delphi gespeichert zu lesen. Wenn ich es mit BintoHex lese, ist das Ergebnis in umgekehrter Reihenfolge. Es scheint, dass ich Bytes austauschen muss, aber ich dachte, dass BinToHex es tun würde.lesen GUID-Wert in der Registrierung
ich auf diesen Thread refered aber ich nicht die richtige Lösung finden: how to convert byte array to its hex representation in Delphi Es scheint, dass es zu wenig Eendian zurückzuführen ist.
Unten können Sie die GUID in der Registry gespeichert sehen
Hier ist mein Code:
var
s : string;
buffer : pointer;
...
begin
getmem(buffer, 1024*1024);
....
reg.ReadBinaryData(iValueOfregistry, buffer^, 1024*1024);
....
bintohex(pointer(longint(buffer)+14), PChar(s), 32);
Ausgang für s: 90E24D373F126545916439C4925E467B
GUID sollte FOLDERID_Downloads GUID sein:
{374DE290-123F-4565-9164-39C4925E467B}
Bitte helfen
Die GUID ist nicht die einzige Sache in der binären Registrierungswert gespeichert. Also muss ich es in einem Puffer lesen und TGUID an der Position $ e in diesem Puffer lesen. Ich vermute, dass eine "Bewegung" vom Puffer (an der Position $ e) zu GUID den Job nicht macht, weil es eine Byte-zu-Byte-Kopie ist. Ist das wahr? Was schlägst du vor, David? – user382591
Ein 'Move' wird den Job perfekt machen. Blit die Daten einfach auf eine 'TGUID' und der Job ist erledigt. Es kann ohne Verschieben mit einem Cast zu 'PGUID' gemacht werden. Das neueste Update zeigt dir wie. –
David, du bist mein Guru – user382591