【问题标题】:disable indy TIdTCPClient connect retries in firemonkey在firemonkey中禁用indy TIdTCPClient连接重试
【发布时间】:2017-05-09 22:31:48
【问题描述】:

我有这个代码来检查我的服务器的连接 所以代码是这样的:

function CheckInternet(ssip:string): boolean;
begin
result:=false;
with form1.IdTCPClient1 do
  try
    ReadTimeout:=2000;
    ConnectTimeout:=1000;
    Port:=80;
    Host:=ssip;
    Connect;
    Disconnect;
    result:=true;
  except
    on E:EIdSocketError do
      result:=false;
    end;
end;

运行后: 如果服务器在线,一切正常 但是如果服务器在线,我会收到很多这样的错误:

debugrelease 模式没有区别!两者都有错误 同样在 android 中,这会导致两个应用程序崩溃并且不处理剩余代码!!.. 我怎样才能避免这个错误?

【问题讨论】:

    标签: firemonkey indy delphi-10.1-berlin


    【解决方案1】:

    只有当您在主 UI 线程的循环中调用 CheckInternet() 并且不捕获引发的异常时,才会发生您看到的情况。当 FMX 中的默认异常处理程序捕获未捕获的异常时,将显示弹出消息。

    EIdSocketError 不是Connect() 可以引发的唯一异常类型。还有其他几种可能的类型,您没有注意到。您应该从 except 块中删除过滤器:

    function CheckInternet(ssip:string): boolean;
    begin
      result:=false;
      with form1.IdTCPClient1 do
      try
        ConnectTimeout:=1000;
        Port:=80;
        Host:=ssip;
        Connect;
        Disconnect;
        result:=true;
      except
        result:=false;
      end;
    end;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-27
      • 2012-07-29
      • 2012-11-04
      • 1970-01-01
      • 1970-01-01
      • 2022-01-23
      • 2014-06-12
      • 2015-05-29
      相关资源
      最近更新 更多