2016-12-24 79 views
0

我有這樣的代碼來檢查連接到我的服務器 這樣的代碼是這樣的:禁用印TIdTCPClient重試連接在firemonkey

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; 

運行後: 如果服務器是網上每一件事情是確定的 但如果服務器在線我得到了很多這個錯誤的:

enter image description here

沒有在debug或差異模式!兩者都有錯誤 也在Android這導致兩個應用程序崩潰,不處理保持代碼!! .. 我怎麼能避免這個錯誤?

回答

0

只有在主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;