1 关于注册表问题,怎样读出二进制值?在线!
在 HKEY_LOCAL_MACHINE\SOFTWARE\P 分支中键值PAS(二进制值)。把键值PAS(二进制值)显示在label1.caption里。举例说明。2 怎样判断一个键值是什么类型的?怎样判断一个键值是字符串值
怎样判断一个键值是二进制值
怎样判断一个键值是DWORD值请举例说明

解决方案 »

  1.   

    create注册表后
    可以用reg.查看
    当键入.的时候系统会把可能有的属性显示出来,好像是readbri什么的,自己看看吧!
      

  2.   

    reg.ReadBinaryData('xxx');//二进制数据
    reg.readstring('xxx');//字符串数据
    reg.ReadCurrency('xxxx');//固计这个可能是DWORD值
      

  3.   

    procedure TForm1.Button2Click(Sender: TObject);
    var
      reg: TRegistry;
      info: TRegDataInfo;
      buf: PByteArray;
      bufSize, i: Integer;
      s: string;
    begin
      reg := TRegistry.Create;
      try
        reg.RootKey := HKEY_LOCAL_MACHINE;
        if reg.OpenKey('\Software\P', True) then
        begin
          reg.GetDataInfo('PAS', info);
          case info.RegData of
            rdString:    // 字符串
              begin
              end;
            rdInteger:   // DWORD
              begin
              end;
            rdBinary:    // 二进制
              begin
                bufSize := info.DataSize;
                if bufSize > 0 then begin
                  buf := AllocMem(bufSize);
                  reg.ReadBinaryData('PAS', buf^, bufSize);
                  s:= '';
                  for i:=0 to bufSize-1 do s:=s+IntToHex(buf[i],2)+' ';
                  if bufSize > 0 then Delete(s, Length(s), 1);
                  Label1.Caption := s;
                  FreeMem(buf, bufSize);
                end;
              end;
          end;
          reg.CloseKey;
        end;
      finally
        reg.Free;
      end;
    end;
      

  4.   

    写入?反过来就可以了啊
    procedure TForm1.Button1Click(Sender: TObject);
    var
      reg: TRegistry;
      bitmap: TBitmap;
      buffer:PByte;
      bufSize: Integer;
    begin
      reg := TRegistry.Create;
      try
        reg.RootKey := HKEY_LOCAL_MACHINE;
        if reg.OpenKey('\Software\P', True) then
        begin
          bitmap:=TBitmap.create;
          bitmap.LoadformStream(S);//S为一个图象流
          bufSize:=S.size;
          GetMem(Buffer,buffersize);
          S.write(Buffer^,buffersize);
          reg.writebinarydata('PAS', buffer^, bufSize);     
          reg.CloseKey;
          Freemem(buffer);
          bitmap.free;
        end;
      finally
        reg.Free;
      end;
    end;
    没有试验,但道理是这样的!
      

  5.   

    reg.writestring是写入
    看来我学得不好,原来readineger是用来读DWORD的,学了一课!