我在一个项目中碰到一个问题,我是通过SOCKET去连接数据库的.然后断线后我就会调用ResetConnect()去重联.
我现在想要达到的目的是,如果客户取消连接我就直接关闭程序.
//
其中取数是这样的.
  ResetConnect();
  ClientDataSet1.Data := TPubSocketConnet.GetDataBySQLS(AstrSql);
//ResetConnect()的过程如下
  //如果连接变断开提示用户重新连接或关闭程序
  while not TPubSocketConnet.Conected do begin
    if TPubMsg.ShowMsgBox( TPubLanguage.language.GetValue(STR_LANGUAGEID_DisconnectServerAreYouResetConnect, '与服务器的连接被断开,是否重新连接'),
        TPubLanguage.language.GetValue(STR_LANGUAGEID_Prompt, '提示'),
        mb_YesNo ) = idyes then begin
      TPubSocketConnet.ResetConnect();
    end else begin
        Break;
    end;
  end;
//
此时我如果把 Break改成 Application.Terminator 或 halt
就会出异常.
我试着用
tryexcept
end
还是会继续执行其它代码,并出异常.

解决方案 »

  1.   

    把   Break改成   Application.Terminator   或   halt 就会出异常,这个异常不是因为你的上面几行代码不正确,而是程序其它部分会出错,你调试看看吧.
      

  2.   

    把break 改成
    application.Terminate;
    exit;试一下
      

  3.   

    你直接改成ExitProcess(0)绝对可以退出来!
      

  4.   

    >>把   Break改成   Application.Terminator   或   halt 会出异常:
    因为Application.Terminate;只是发出退出系统的消息,并不会退出当前的函数。
    你在Application.Terminate;
    后面加上一句:exit;就可以了。
      

  5.   

      将break改成exit;
      然后在程序执行此函数的下一个函数时执行terminate