Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Registry Binary lesen und schreiben (https://www.delphipraxis.net/132107-registry-binary-lesen-und-schreiben.html)

Landogar-Garuno 6. Apr 2009 11:50


Registry Binary lesen und schreiben
 
hallo alle zusammen...

habe mal wieder ein problem...

das lesen von Registry binary funzt

hier der code

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  Key: HKEY;
  buf: array of byte;
  size: integer;
  i: integer;
  s: string;
begin
  if RegOpenKeyEx(HKEY_LOCAL_MACHINE, 'SOFTWARE\Microsoft\Windows NT\CurrentVersion', 0, KEY_READ, Key) = ERROR_SUCCESS then
  try
    size := ReadRegBinary(Key, 'LicenseInfo', buf, 0);
    if size <> -1 then begin
      SetLength(buf, size);
      ReadRegBinary(Key, 'LicenseInfo', buf, size);
    end;
  finally
    RegCloseKey(Key);
  end;

  s := '';
  for i := 0 to High(buf) do begin
    s := s + IntToHex(buf[i],2) + ' ';
  end;
 Richedit1.Font.Name := 'Courier New';
 richedit1.text:=(s)
wobei die lösung mit richedit mir nicht gefällt...aber StringGrid bekomme ich nicht hin

so nun mein Problem...wie schreibe ich den wert in die registry , den ich geändert habe im richedit

kann mir jemand helfen ?

eventuell auch vorschläge für StringGrid ?

danke

habe vergessen......

Delphi-Quellcode:
function ReadRegBinary(Key: HKEY; Name: string; var Buffer; BufSize: Integer): integer;
var
  DataType: Integer;
  Status: integer;
begin
  result := -1;
  DataType := REG_NONE;
  try
    // return the size of the buffer required
    if BufSize = 0 then begin
    // get data type and buffer size
      Status := RegQueryValueEx(Key, PChar(Name), nil, @DataType, nil, @BufSize);
      if Status = ERROR_SUCCESS then begin
        result := BufSize;
      end;
    end else begin
      // get data
      if RegQueryValueEx(Key, PChar(Name), nil, @DataType, PByte(Buffer),
         @BufSize) = ERROR_SUCCESS then result := BufSize
      else result := -1;
    end;
  except
    result := -1;
  end;
end;
[edit=mkinzler]Code.Tags durch Delphi-Tags ersetzt Mfg, mkinzler[/edit]

blackdrake 23. Apr 2009 01:37

Re: Registry Binary lesen und schreiben
 
Hallo.

Splitte zuerst alles wieder in 2er Paare auf.

Dann wandelst du die 00..FF Paare wieder in Integer um: http://www.delphipraxis.net/internal...ect.php?t=3882

Und dann schreibst du diese Integer-Sequenz wieder in die Registry als Puffer.

Noch einfacher könnte es sogar hiermit gehen: http://www.greatis.com/delphicb/tips...s-hex2bin.html .

Solange alles bei String bleibt ist es OK. Aber Achtung beim Wandeln in PChar. Denn ein PChar bricht ab, sobald ein 00h in deiner Binärsequenz auftaucht.

Gruß
blackdrake


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