写入注册表我放在ComboBox的OnChange事件当中:
procedure TfrmSet.ComboBox1Change(Sender: TObject);
begin
   RegF:=TRegistry.Create;
   RegF.RootKey:=HKEY_LOCAL_MACHINE;
   RegF.OpenKey('\SOFTWARE\Microsoft\Windows\CurrentVersion\Run',True);
   RegF.WriteInteger('Project1',ComboBox1.ItemIndex);
   RegF.Free;
end;读注册表:
procedure TfrmSet.FormShow(Sender: TObject);
begin
   com_index:=0;
   RegF:=TRegistry.Create;
   RegF.RootKey:=HKEY_LOCAL_MACHINE;
   RegF.OpenKey('\SOFTWARE\Microsoft\Windows\CurrentVersion\Run',True);
   com_index:=RegF.ReadInteger('Project1');
   RegF.Free;
   ComboBox1.ItemIndex:=com_index;
end;这样的不足之处相信大家已看出来了,那就是程序第一次启动时,从注册表当中读不到指定路径的值。有什么办法可以让程序如果ComboBox的OnChange事件没触发过就不从注册表当中读取数据吗?请指点

解决方案 »

  1.   

    if regf.keyexists() then
    beginend;
    判断是否存在该键,如果存在,就加载
      

  2.   

    if regf.keyexists() then
    beginend;
    判断是否存在该键,如果存在,就加载
      

  3.   

    CloseKey  关闭一个键
    CreateKey  创建一个新键
    DeleteKey  删除键
    DeleteValue 删除键值
    HasSubKeys  测试一个键是否有子键
    KeyExits  测试一个键是否存在
    OpenKey  打开一个键
    ReadBool  
    ReadInteger
    ReadString
    WriteBool
    WriteInteger
    WriteString
      

  4.   

    不好意思,请问regf.keyexists() 括号里面怎么写?是regf.keyexists('HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\Project1') 吗?不对啊?