我动态断开数据库,第一次成功后,但是,点击第二次就出错,为什么第一次free后,不是 AdoConnection_Server = nil 吗?procedure TForm1.Button2Click(Sender: TObject);
begin  if AdoConnection_Server <> nil then
  begin    AdoConnection_Server.Close;
    AdoConnection_Server.Free;
  end;end;

解决方案 »

  1.   

    Object Free以后就不能再Free了,Free之前Assigned判断实例是否存if Assigned(AdoConnection_Server) then AdoConnection_Server.Free;断开直接用AdoConnection_Server.Contected := false就可以了. 
      

  2.   

    楼上意思是不是这样啊?  if Assigned(AdoConnection_Server) then
      begin    AdoConnection_Server.Close;
        AdoConnection_Server.Free;
      end;但是,同样点击第二次还是会报错?
      

  3.   

      if Assigned(AdoConnection_Server) then 
      begin 
        AdoConnection_Server.Close; 
        AdoConnection_Server.Free; 
        AdoConnection_Server := nil;
      end;     AdoConnection_Server.Free; 
        AdoConnection_Server := nil;
    这两句可以改为:FreeAndNil(AdoConnection_Server);