小弟想在软件中向注册表中添加类弄为二进制值的键值,在DFW经高人指点,说用TRegistry类的WriteBinaryData方法便可搞定。
可是小弟试了N次,仍不得要领,还请各大虾指点一下!

解决方案 »

  1.   

    用 WriteInteger、WriteBoolean、WriteFloat 等都是添加二进制类型的键值的。
      

  2.   

    function  SetInfoInReg(Key:HKEY;IniSubKey,IniString:string;Default:Variant):Boolean;
    //设置Windows注册表信息
    var
     IniFile:TRegistry;
    begin
      result:=true;
      IniFile := TRegIniFile.Create('');
      IniFile.RootKey := KEY;
      try
        IniFile.openkey(InisubKey,true);
        case VarType(Default) of
          varBoolean:
            IniFile.WriteBool(IniString,Default);
          varDate:
            IniFile.WriteDateTime(IniString,Default);
          varString,varStrArg,varOleStr:
            IniFile.WriteString(IniString,Default);
          varInteger,varByte,varSmallint:
            IniFile.WriteInteger(IniString,Default);
          varSingle,varDouble:
            IniFile.WriteFloat(IniString,Default);
          varCurrency:
            IniFile.WriteCurrency(IniString,Default);
        end;
      except
        result:=false;
      end;
      IniFile.free;
    end;SetInfoInReg(HKEY_LOCAL_MACHINE,'Software\test,'abc',true);
      

  3.   

    To 楼上
    我要问的只是怎样向注册表中添加类型为二进制值的键值,又没问你那么多 :-)
    我现在只想知道WriteFloat方法应该怎样用,比如我在注册表编辑器中新建->二进制值->输入一个键值名Suunb,并把Suunb键值的值设置为41(即A的ASII码),可是我如果用WriteFloat来写入的话Reg.WriteFloat('Suunb',41); 在注册表编辑器中得到的Suunb的值却是00 00 00 00 00 80 44 40,呜呜呜...
    另外如果我要是想给Suunb付值 00 00 00 00 00 80 44 40 ,那又该如果实现呢?
    帮忙搞定,嫌分少再另付...
      

  4.   

    这个就是float的二进制保存方式,你管它怎么写的呢
    只要读出来能够还是41就行了
      

  5.   

    可是我的目的不在此啊兄台。
    如果我需要要向注册表中添加一个值为41的值,到底要用什么方法呢?
    难道TRegistry类没有此类方法?
    苦恼中...
      

  6.   

    再使用 reg.ReadFloat 读出来不就行了。