線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1354
推到 Plurk!
推到 Facebook!

TNMFTP download File 時如果斷線如何處理?

答題得分者是:andychang1690
kadlac
一般會員


發表:18
回覆:30
積分:9
註冊:2004-07-23

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-07-26 19:32:56 IP:61.219.xxx.xxx 未訂閱
大家好! 我在使用 TNMFTP元件時, connect上之後,就download File , download File 時如果斷線(例如網路斷了或是網路太慢傳到一半停在那裡不動) 時該如何處理(或是該如何中斷之),才能使程式繼續跑其他的程序,而不會出現 Connection Fail 的對話框? (因為我在寫一個自動測試的小程式, 如果FTP 停在那裡,就無法繼續下一個測試 ) 謝謝大家的幫忙! 發表人 - taishyang 於 2004/07/26 20:39:19
andychang1690
資深會員


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-07-27 09:48:58 IP:219.132.xxx.xxx 未訂閱
建議你處理下列NMFTP1Error事件及NMFTP1Failure事件
void __fastcall TFormMain::NMFTP1Error(TComponent *Sender, WORD Errno,
      AnsiString Errmsg)
{
  ShowMessage("Error " IntToStr(Errno) ": " Errmsg);        
}
//---------------------------------------------------------------------------
void __fastcall TFormMain::NMFTP1Failure(bool &handled, TCmdType Trans_Type)
{
  switch (Trans_Type) {
    case cmdChangeDir: StatusBar1->SimpleText = "ChangeDir failure"; break;
    case cmdMakeDir: StatusBar1->SimpleText = "MakeDir failure"; break;
    case cmdDelete: StatusBar1->SimpleText = "Delete failure"; break;
    case cmdRemoveDir: StatusBar1->SimpleText = "RemoveDir failure"; break;
    case cmdList: StatusBar1->SimpleText = "List failure"; break;
    case cmdRename: StatusBar1->SimpleText = "Rename failure"; break;
    case cmdUpRestore: StatusBar1->SimpleText = "UploadRestore failure"; break;
    case cmdDownRestore: StatusBar1->SimpleText = "DownloadRestore failure"; break;
    case cmdDownload: StatusBar1->SimpleText = "Download failure"; break;
    case cmdUpload: StatusBar1->SimpleText = "Upload failure"; break;
    case cmdAppend: StatusBar1->SimpleText = "UploadAppend failure"; break;
    case cmdReInit: StatusBar1->SimpleText = "ReInit failure"; break;
    case cmdAllocate: StatusBar1->SimpleText = "Allocate failure"; break;
    case cmdNList: StatusBar1->SimpleText = "NList failure"; break;
    case cmdDoCommand: StatusBar1->SimpleText = "DoCommand failure"; break;
        default: ShowMessage("Unrecognized command failed."); break;
  }
}
請參考        
Andy Chang
------
Andy Chang
kadlac
一般會員


發表:18
回覆:30
積分:9
註冊:2004-07-23

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-07-27 11:15:55 IP:61.219.xxx.xxx 未訂閱
void __fastcall TFormMain::NMFTP1Error(TComponent *Sender, WORD Errno, AnsiString Errmsg) 及 void __fastcall TFormMain::NMFTP1Failure(bool &handled, TCmdType Trans_Type) 這兩個事件我都有加進去, 可是還是會中斷 , 並出現Connection Fail 的對話框, 並使程式流程無法繼續下去.....
andychang1690
資深會員


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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-07-27 11:43:26 IP:219.132.xxx.xxx 未訂閱
試試於.hpp檔加入
public:                // User declarations
        __fastcall TFormMain(TComponent* Owner);
        void __fastcall HandleExceptions(TObject *Sender, Exception *E);
.cpp檔
void __fastcall TFormMain::FormCreate(TObject *Sender)
{
  // 設定exception handler.自定義異常處理窗口
  Application->OnException = HandleExceptions;
}
void __fastcall TFormMain::HandleExceptions(TObject *Sender, Exception *E)
{
  if (E->Message.Length())
  {
    Screen->Cursor = crArrow;
    AnsiString errorstr="應用程序發生了錯誤.\n" E->Message;
    Application->MessageBox(errorstr.c_str(),"發生異常",MB_OK);
  }
}
你應該可以攔到Connection Fail 的對話框並決定程式走向。    
Andy Chang
------
Andy Chang
kadlac
一般會員


發表:18
回覆:30
積分:9
註冊:2004-07-23

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-07-30 13:43:34 IP:61.219.xxx.xxx 未訂閱
非常謝謝您的幫忙!
kadlac
一般會員


發表:18
回覆:30
積分:9
註冊:2004-07-23

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-08-02 22:32:04 IP:61.219.xxx.xxx 未訂閱
可以再請教一下嗎? 假設程式如下, 執行ftp 指令,且攔截到" Connection Fail 對話框 如何使程式繼續命令3, 命令4 ? void _fastcall TForm1::Timer11Timer(TObject *Sender) { 命令1; 命令2; FTP指令; 命令3; 命令4; } void __fastcall TFormMain::HandleExceptions(TObject *Sender, Exception *E) { if (E->Message.Length()) { Screen->Cursor = crArrow; AnsiString errorstr="應用程序發生了錯誤.\n" E->Message; Application->MessageBox(errorstr.c_str(),"發生異常",MB_OK); } }
系統時間:2024-05-16 10:11:37
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!