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

[問題]Indy ftp client

尚未結案
astiya
一般會員


發表:9
回覆:7
積分:3
註冊:2003-08-04

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-03-02 10:25:13 IP:61.222.xxx.xxx 未訂閱
我使用IdFTP1->Put(LocalFile,DesFile,false);上傳檔案時整個程式的其他按鈕跟其他function(如Timer)都失效了,另一個按鈕用IdFTP1->Abort();完全沒反應,程式就像當掉一樣,可是檔案持續在上傳,請問這是何緣故,如何解決,謝謝!
axsoft
版主


發表:681
回覆:1056
積分:969
註冊:2002-03-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-03-02 11:22:57 IP:61.218.xxx.xxx 未訂閱
astiya您好: 試著在您上傳檔案部份加入:
    Application->ProcessMessages();//Call ProcessMessages to permit the application to process events
                               //that are currently in the queue. 
或
 Sleep(50); //Delay 50ms
也許有幫助... < class="code">/*生活是一種藝術,用心生活才能享受生活*/
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-03-02 14:01:44 IP:61.221.xxx.xxx 未訂閱
引言: 我使用IdFTP1->Put(LocalFile,DesFile,false);上傳檔案時整個程式的其他按鈕跟其他function(如Timer)都失效了,另一個按鈕用IdFTP1->Abort();完全沒反應,程式就像當掉一樣,可是檔案持續在上傳,請問這是何緣故,如何解決,謝謝!
astiya 你好:
請參考以下的做法
(>>Host="127.0.0.1">Username="Username";
   IdFTP2->Password="Password";
   IdFTP2->Connect(true, 3000);
   IdFTP2->ChangeDir("/Test");
   IdFTP2->Put("C:\\01.wav", "01.wav", false);
   IdFTP2->Disconnect();
}
void __fastcall TForm1::Button3Click(TObject *Sender)
{
   gbAbort=true;
}
void __fastcall TForm1::IdFTP2WorkBegin(TObject *Sender,
      TWorkMode AWorkMode, const int AWorkCountMax)
{
   Application->ProcessMessages();
   CGauge2->Progress=0;
   giWorkCountMax=AWorkCountMax;
}
void __fastcall TForm1::IdFTP2Work(TObject *Sender, TWorkMode AWorkMode,
      const int AWorkCount)
{
   Application->ProcessMessages();
   if(gbAbort)
   {
      IdFTP2->Abort();
      IdFTP2->Disconnect();
   }
   else
   {
      CGauge2->Progress=AWorkCount*100/giWorkCountMax;
   }
}
(6)請再依照自己的需求做修改
備註: 測試環境 Windows 2000 Server SP3, BCB 6.0 Update 4, Indy V.9.0.14 -- Enjoy Researching & Developing -- 發表人 - RaynorPao 於 2004/03/02 23:16:16
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
astiya
一般會員


發表:9
回覆:7
積分:3
註冊:2003-08-04

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-03-02 18:36:32 IP:61.222.xxx.xxx 未訂閱
感謝axsoft及RaynorPao兩位版主,我根據RaynorPao版主的方式寫了一個測試程式,的確可以正常執行,不過比較奇怪的是,CGauge怎麼會跑到30%時又歸零重新跑~~~@@"
astiya
一般會員


發表:9
回覆:7
積分:3
註冊:2003-08-04

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-03-03 19:18:42 IP:61.222.xxx.xxx 未訂閱
我跟RaynorPao版主的測試環境只有作業系統不同,難道是XP的關係? 我測了一下,好像跟檔案大小有關,我本來傳一個70MB的檔就會這樣,但是 換成1MB的檔就正常了~~~~@@
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-03-04 12:21:06 IP:203.73.xxx.xxx 未訂閱
引言: 我跟RaynorPao版主的測試環境只有作業系統不同,難道是XP的關係? 我測了一下,好像跟檔案大小有關,我本來傳一個70MB的檔就會這樣,但是 換成1MB的檔就正常了~~~~@@
astiya 你好: 那是因為乘法的結果超出整數數值的範圍了,改成這樣子應該就可以了 < class="code"> double gdWorkCountMax; //int giWorkCountMax; bool gbAbort; void __fastcall TForm1::Button2Click(TObject *Sender) { gbAbort=false; IdFTP2->Host="127.0.0.1"; IdFTP2->Username="Username"; IdFTP2->Password="Password"; IdFTP2->Connect(true, 3000); IdFTP2->ChangeDir("/Test"); IdFTP2->Put("C:\\test\\test.exe", "test.exe", false); IdFTP2->Disconnect(); } void __fastcall TForm1::Button3Click(TObject *Sender) { gbAbort=true; } void __fastcall TForm1::IdFTP2WorkBegin(TObject *Sender, TWorkMode AWorkMode, const int AWorkCountMax) { Application->ProcessMessages(); CGauge2->Progress=0; // giWorkCountMax=AWorkCountMax; gdWorkCountMax=AWorkCountMax; } void __fastcall TForm1::IdFTP2Work(TObject *Sender, TWorkMode AWorkMode, const int AWorkCount) { Application->ProcessMessages(); if(gbAbort) { IdFTP2->Abort(); IdFTP2->Disconnect(); } else { double dWorkCount=AWorkCount; CGauge2->Progress=(int)(dWorkCount*100/gdWorkCountMax); // CGauge2->Progress=AWorkCount*100/giWorkCountMax; } } -- Enjoy Researching & Developing --
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
astiya
一般會員


發表:9
回覆:7
積分:3
註冊:2003-08-04

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-03-05 00:45:15 IP:61.222.xxx.xxx 未訂閱
真是太感謝RaynorPao版主囉!每次的問題都由你解救,你真是我的良師呀~~~:)
系統時間:2024-04-19 18:38:32
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!