全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1109
推到 Plurk!
推到 Facebook!

如何偵測某個網址是否可正常連結?

答題得分者是:luckfox
nlj859
資深會員


發表:139
回覆:375
積分:322
註冊:2004-03-20

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-08-12 00:33:02 IP:219.80.xxx.xxx 未訂閱
我輸入一個網址,馬上就能夠判別是否可正常連結,且要能夠秀出message. if (正常連結) ShowMessage("連結成功"); else ShowMessage("連結失敗"); 請問該如何撰寫? 謝謝.
luckfox
一般會員


發表:34
回覆:40
積分:24
註冊:2002-10-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-08-12 00:55:03 IP:218.32.xxx.xxx 未訂閱
檢查某一URL是否能被連線 void __fastcall TForm1::Button1Click(TObject *Sender) { BOOL bResult; AnsiString URL; URL="http://www.kimo.com.tw"; bResult=InternetCheckConnection(URL.c_str(),FLAG_ICC_FORCE_CONNECTION,0); if(bResult) ShowMessage("NetWork is On Line"); else ShowMessage("NetWork is not alive"); } Header: Declared in Wininet.h. Library: Use Wininet.lib. 參考網址:http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wininet/wininet/internetcheckconnection.asp
nlj859
資深會員


發表:139
回覆:375
積分:322
註冊:2004-03-20

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-08-12 01:15:33 IP:219.80.xxx.xxx 未訂閱
Thanks. 使用現有元件有辦法做到嗎? 可否告知一下.
andychang1690
資深會員


發表:20
回覆:694
積分:442
註冊:2003-03-14

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-08-12 11:18:53 IP:219.130.xxx.xxx 未訂閱
元件處理不如luckfox的方式好
如TCppWebBrowser的OnTitleChange的BSTR URL
你可以看到若不能連結網址所顯示的Title
TClientSocket也可以做到但就更麻煩
.hpp
public:        
  __fastcall TForm1(TComponent* Owner);
  // 設定exception handler.自定義異常處理窗口
  void __fastcall HandleExceptions(TObject *Sender, Exception *E);
.cpp
void __fastcall TForm1::FormCreate(TObject *Sender)
{
  ...
  // 設定exception handler.自定義異常處理窗口
  Application->OnException = HandleExceptions;
}
void __fastcall TForm1::HandleExceptions(TObject *Sender, Exception *E)
{
  if (E->Message.Length())
  {
    Screen->Cursor = crArrow;
    AnsiString errorstr="應用程序發生了錯誤.\n" E->Message;
    AnsiString S1;
    S1="發生異常";
    Application->MessageBox(errorstr.c_str(),S1.c_str(),MB_OK);
// 基本上發生不能連結,E->Message會有socket error的訊息,你要自行處理
  }
}
加一個Button,ClientSocket,一個Edit
Edit內容為網名,例:delphi.ktop.com.tw
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  try  {
    if (ClientSocket1->Active)
      ClientSocket1->Active = false;
    ClientSocket1->Host =Edit1->Text;
    ClientSocket1->Port =80;
    Sleep(300);
    ClientSocket1->Active = true;
  }
  catch(...)  {
    if (ClientSocket1->Active)
      ClientSocket1->Active = false;
  }
}
void __fastcall TForm1::ClientSocket1Connect(TObject *Sender,
      TCustomWinSocket *Socket)
{
  ClientSocket1->Socket->SendText("http://" Edit1->Text) ;
  // ("http://"請最好加入
}
這也是方式,請參考
Andy Chang
------
Andy Chang
系統時間:2024-05-15 21:50:47
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!