Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi REG_Binary Wert in Registry ändern (https://www.delphipraxis.net/48671-reg_binary-wert-registry-aendern.html)

CodeX 28. Jun 2005 19:58


REG_Binary Wert in Registry ändern
 
hi coder,

in der registry steht ein wert der dort als reg_binary angezeigt wird.
sein wert ist in etwa
3C 00 A1 0D ...
nun müsste ich das in
3C 00 A1 05 ändern können.

momentan habe ich:
Delphi-Quellcode:
reg.Rootkey := HKEY_CURRENT_USER;
reg.OpenKey(RegKey, True);

vSize := reg.GetDataSize(RegValue);
tmpstr := StringOfChar(#00,vSize);
reg.ReadBinaryData(RegName, tmpstr[1], vSize);

repeat
p := Pos(#0, tmpStr);

if p <> 0 then
 begin
  Delete(tmpStr, p, 1);
 end;
until p = 0;
(in etwa von hier)

das problem ist, dass nach dem auslesen in zeichen umgewandelt wird statt in der gewünschten form (3C 00 A1 0D) zu bleiben.
ich brauche einfach den gesamten schlüsselwert als string ("3C 00 A1 0D"), den ich dann bearbeite und wieder zurückschreibe.

wo liegt der fehler? oder doch ganz anders machen?

danke & gruß

Christian Seehase 29. Jun 2005 01:19

Re: REG_Binary Wert in Registry ändern
 
Moin CodeX,

ein Zeichen ist nur eine andere Darstellung für den zu Grunde liegenden Binärwert.
Was Du da mit der repeat-Schleife machst weiss ich nicht, aber wenn Du einen Wert ändern willst geht das, z.B., so:

Delphi-Quellcode:
if ord(tmpstr[4]) = $0D then tmpstr[4] := chr($05);
um das vierte Zeichen von 0D auf 05 zu ändern.

CodeX 29. Jun 2005 12:16

Re: REG_Binary Wert in Registry ändern
 
hi christian,

ja du hast recht. das zeichen problem war nur eine darstellungssache. in die registry geschrieben wird es korrekt.
die repeat-schleife hatte ich aus dem verlinkten thread. ist aber wohl wirklich überflüssig/falsch.

eine frage hätte ich aber noch.
kann ich mit diesen werten auch rechnen? dh, wenn ich dieses ersetzen etwas universeller machen möchte.
aus 0D wird 05 indem 8 subtrahiert wird. ich habe nämlich gemerkt, dass es auch sein kann, dass da nicht 0D sondern zb 09 steht. dann müsste da 01 draus werden.

danke und gruß

Christian Seehase 29. Jun 2005 13:51

Re: REG_Binary Wert in Registry ändern
 
Moin CodeX,

klar kannst Du damit rechnen.

Delphi-Quellcode:
tmpstr[4] := chr(ord(tmpstr[4])-8);

CodeX 30. Jun 2005 19:26

Re: REG_Binary Wert in Registry ändern
 
perfekt. danke. :thumb:


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:29 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