Windows注册表中有如下的值数据:
"{ED475418-B0D6-11D2-8C3B-00104B2A6676}"=hex:04,00,00,00
如何使用Delphi编程实现将上面的数据读出来,在后面追加成如下的值:
"{ED475418-B0D6-11D2-8C3B-00104B2A6676}"=hex:04,00,00,00,05,00,00,00我知道读出数据肯定是需要使用ReadbinaryData函数,但是读出的数据如何处理?如果能把上面的hex:04,00,00,00,通过程序读出来转为 Integer类型的 4,我就可以搞定了,各位高手帮忙看看吧,谢谢!

解决方案 »

  1.   

    uses
      Registry;procedure TForm1.FormCreate(Sender: TObject);
    const
      newdata:array[0..3] of char = (#5,#0,#0,#0);
    var
      reg: TRegistry;
      datalen:Integer;
      data:array of Char ;begin
      reg := TRegistry.Create;
      try
        reg.RootKey := HKEY_CURRENT_USER;
        if reg.OpenKey('test',false) then
          try
            datalen := reg.GetDataSize('{ED475418-B0D6-11D2-8C3B-00104B2A6676}');
            SetLength(Data,datalen);
            try
              datalen := reg.ReadBinaryData('{ED475418-B0D6-11D2-8C3B-00104B2A6676}',data[0],datalen);
              SetLength(Data,datalen+sizeof(newdata));
              move(newdata,pchar(Integer(data)+datalen)^,sizeof(newdata));
              datalen := datalen + sizeof(newdata);
              reg.WriteBinaryData( '{ED475418-B0D6-11D2-8C3B-00104B2A6677}',data[0],datalen);//这里使用新的键值用于查看效果
            finally
              Data := Nil;
            end;
          finally
            reg.CloseKey;
          end;  finally
        reg.Free;
      end;
    end;