主窗口调用第2个窗口,下列代码在第2个窗口中:
var
   sUser,sCode : string;
   sReg : TRegistry;
begin
        sReg.RootKey:=HKEY_CURRENT_USER;
        sReg.OpenKey('\Software\XSoft\MySoft',True);
        sReg.WriteString('User',sUser);
        sReg.WriteString('Code',sCode);
        sReg.CloseKey;
end;
程序中有了这段代码后,整个程序退出是会发生错误,请问为什么?

解决方案 »

  1.   

    sReg:= TRegistry.Create;
    try
      sReg.RootKey:=HKEY_CURRENT_USER;
      if sReg.OpenKey('\Software\XSoft\MySoft',True) then
      begin
        sReg.WriteString('User',sUser);
        sReg.WriteString('Code',sCode);
      end;
      sReg.CloseKey;
    finally
      sReg.free;
    end;
      

  2.   

    var
       sUser,sCode : string;
       sReg : TRegistry;
    begin
            sReg:=TRegister.Create;//你没有调用这一句,创建一个新对象啊
            sReg.RootKey:=HKEY_CURRENT_USER;
            sReg.OpenKey('\Software\XSoft\MySoft',True);
            sReg.WriteString('User',sUser);
            sReg.WriteString('Code',sCode);
            sReg.CloseKey;
            sReg.Free;//用完之后要Free掉
    end;
      

  3.   

    同意 Eastunfail(恶鱼杀手) 的说法
    sReg:=TRegister.Create;//你没有调用这一句,创建一个新对象啊
     sReg.Free;//用完之后要Free掉
      

  4.   

    这样写最好~~sReg:= TRegistry.Create;
    with sReg do
    try
      RootKey:=HKEY_CURRENT_USER;
      if OpenKey('\Software\XSoft\MySoft',True) then
      begin
        WriteString('User',sUser);
        WriteString('Code',sCode);
      end;
      CloseKey;
    finally
      Free;
    end;
      

  5.   

    使用下面代码后,在Form.Create事件中正常,但是在Button.Click再用一次,就会出现错误。
    var
       sUser,sCode : string;
       sReg : TRegistry;
    begin
           sReg:=TRegistry.Create;//加入这句话
           try
            sReg.RootKey:=HKEY_CURRENT_USER;
            sReg.OpenKey('\Software\XSoft\MySoft',True);
            sReg.WriteString('User',sUser);
            sReg.WriteString('Code',sCode);
            sReg.CloseKey;
           finally
            sReg.free;
           end;
    end;