Próbuję odczytać wartość GUID zapisaną jako wartość binary
w rejestrze w Delphi. Po przeczytaniu go z BintoHex, ale wynik jest w odwrotnej kolejności. Wygląda na to, że muszę zamienić bajty, ale myślałem, że BinToHex to zrobi.Odczytaj wartość GUID zapisaną w rejestrze
Podobał mi się ten wątek, ale nie mogę znaleźć odpowiedniego rozwiązania: how to convert byte array to its hex representation in Delphi Wygląda na to, że jest to spowodowane małym Eendianem.
Poniżej można zobaczyć GUID zapisany w rejestrze
Oto mój kod:
var
s : string;
buffer : pointer;
...
begin
getmem(buffer, 1024*1024);
....
reg.ReadBinaryData(iValueOfregistry, buffer^, 1024*1024);
....
bintohex(pointer(longint(buffer)+14), PChar(s), 32);
Wyjście S: 90E24D373F126545916439C4925E467B
GUID powinny być FOLDERID_Downloads GUID:
{374DE290-123F-4565-9164-39C4925E467B}
Proszę o pomoc
GUID nie jest jedyną rzeczą przechowywaną w wartości rejestru binarnego. Tak więc, muszę odczytać go w buforze i odczytać TGUID na pozycji $ e w tym buforze. Podejrzewam, że "ruch" z bufora (na pozycji $ e) do GUID nie wykona zadania, ponieważ jest to kopia bajt-bajt. Czy to prawda? Co sugerujesz, David? – user382591
"Przenieś" doskonale wykona zadanie. Po prostu przenieś dane na 'TGUID' i zadanie zostanie wykonane. Można to zrobić bez przenoszenia za pomocą rzutowania do 'PGUID'. Najnowsza aktualizacja pokazuje, jak to zrobić. –
Dawidzie, jesteś moim Guru – user382591