reg.RootKey:=HKEY_LOCAL_MACHINE;
   if not reg.KeyExists('\software\JavaSoft\Prefs\webapp') then
     begin
      reg.CreateKey('\software\JavaSoft\Prefs\webapp');
      reg.WriteString('sheng','1');
      reg.WriteString('shi','1');
      reg.WriteString('xian','1');
     end
-----------------------------------------------------------------
为什么报错'failed to set data for sheng ',这应该没错啊?

解决方案 »

  1.   

    you shoul open key firsthave a try
    reg.CreateKey('\software\JavaSoft\Prefs\webapp');
    if reg.OpenKey('\software\JavaSoft\Prefs\webapp') then
    begin
      reg.WriteString('sheng','1');
      ...
    end;
      

  2.   

    谢谢楼上的回答,但是我的目的就是要在条件里createkey,
    --------------------------------------------------
    reg:=TRegistry.Create;
     try
       reg.RootKey:=HKEY_LOCAL_MACHINE;
       if not reg.KeyExists('\software\JavaSoft\Prefs\webapp') then
         begin
          reg.CreateKey('\software\JavaSoft\Prefs\webapp');
          reg.WriteString('sheng','1');
          reg.WriteString('shi','1');
          reg.WriteString('xian','1');
         end
       else
        reg.OpenKeyReadOnly('\software\JavaSoft\Prefs\webapp');
          setnames:=TStringlist.Create;
          reg.GetValueNames(setnames);
          for i:=0 to setnames.Count-1 do
           begin
            if setnames.Strings[i]='sheng' then
            begin          //还有这里,这里用什么函数删除键值名          showmessage('1');
              exit;
            end;
           end;
     finally
     reg.Free;
     end;
    --------------------------------------------------------------
      

  3.   

    reg:=TRegistry.Create;
     try
       reg.RootKey:=HKEY_LOCAL_MACHINE;
       if not reg.KeyExists('\software\JavaSoft\Prefs\webapp') then
         begin
          reg.CreateKey('\software\JavaSoft\Prefs\webapp');
          if reg.OpenKey('\software\JavaSoft\Prefs\webapp') then
          begin
            reg.WriteString('sheng','1');
            reg.WriteString('shi','1');
            reg.WriteString('xian','1');
          end;
         end
       else
        reg.OpenKeyReadOnly('\software\JavaSoft\Prefs\webapp');
          setnames:=TStringlist.Create;
          reg.GetValueNames(setnames);
          for i:=0 to setnames.Count-1 do
           begin
            if setnames.Strings[i]='sheng' then
            begin          //还有这里,这里用什么函数删除键值名
              if KeyExists('sheng') then
                if DeleteKey('sheng') then
                  ShowMessage('已经删除');
              showmessage('1');
              exit;
            end;
           end;
     finally
     reg.Free;
     end;
      

  4.   

    deletekey('sheng')删除不了,我要澄清一下,sheng不是主键,是数值键
      

  5.   

    reg.DeleteValue()//刪除值;
    reg.DeleteKey()//刪除主鍵;
      

  6.   

    删除不了,是因为你用只读的方式打开的OpenKeyReadOnly, 用OpenKey