如果不知道注册表中二进制数据的长度怎么办,怎么读取期全部内容?

解决方案 »

  1.   

    procedure Read;
    var
      Reg: TRegistry;
      Buffer: array of Byte;
      Count: Integer;
    begin
      Reg := TRegistry.Create;
      with Reg do
      try
        RootKey := HKEY_CURRENT_USER;
        if OpenKey('\Software\Corp\BinaryData', False) then
        begin
          //获得数据的长度后,以这个长度设置动态数组的长度,读取这个数据
          Count := GetDataSize('BinaryDataKey');
          SetLength(Buffer, Count);
          ReadBinaryData(BattleNetKey, Buffer[0], Count);
          ......
        end;
      finally
        free;
      end;
    end;
      

  2.   

    上有误!procedure Read;
    var
      Reg: TRegistry;
      Buffer: array of Byte;
      Count: Integer;
    begin
      Reg := TRegistry.Create;
      with Reg do
      try
        RootKey := HKEY_CURRENT_USER;
        if OpenKey('\Software\Corp\BinaryData', False) then
        begin
          //获得数据的长度后,以这个长度设置动态数组的长度,读取这个数据
          Count := GetDataSize('BinaryDataKey');
          SetLength(Buffer, Count);
          ReadBinaryData('BinaryDataKey', Buffer[0], Count);
          ......
        end;
      finally
        free;
      end;
    end;