使用 Indy 元件, 隨時顯示文件下載的進度 |
|
dennieschang
一般會員 發表:2 回覆:24 積分:15 註冊:2002-03-13 發送簡訊給我 |
在 看到了網友 ddddd688 於網際網路程式設計討論區貼出的問題, 而且兩週以上都沒有人
回答, 相信可能是兩種情形: 1. 這問題很多人問過, 可是網友 ddddd688 沒有爬文找一下 Solution, 所以沒人回他. 2. 這問題大家都不知道該怎麼解決. 不論是哪一種, 我覺得這是很實用的東西, 所以寫了小範例跟大家分享. 在 Indy 的各個元件當中, 不管是 server 還是 Client, 都會有個固定的 property, 叫做 IOHandler, 如果要從正在傳遞的 Channel 當中擷取資料, 就必須透過各個 元件的 IOHandler.Intercept.OnReceive 或是 IOHandler.Intercept.OnSend. 差別在哪呢? 在於 Server 用 OnSend 可以知道送出了多少資料, Client 則是要用 OnReceive 來知道接到了多少資料, 以及是哪些資料. 但是如果您只用 OnReceive, OnSend, 想要把這資訊秀在 Form, 或者是任一元件上面, 都會發現, 進度沒辦法即時顯示, 這又是為什麼呢? 這是因為, 介面更新和 Data 傳輸使用的都是同一個 Thread, 接收的時候沒辦法同時更新. 所以, 在筆者的範例當中, 是使用了一個單獨的 Thread 來控制下載的工作, 這個Thread 在 OnReceive 的時候, 會送出介面更新要求給 MainThread 所控制的 MainForm, 所以就可以 在資料進來的同時, 也看到畫面上的數字在跑了. Sorry, 這應該在筆者的書上面發表的, 但這本書出版之日目前看來還是遙遙無期... 因為出版社 跟我說, 現在 Delphi 的書沒銷量... 他們不想出... Best Regard. Dennies Chang. Delphi/Kylix Indy 網路程式設計一書作者.
------
Indy - Delphi, BCB, Kylix最好用的網路元件組. 小弟也是Indy Core Team的成員之一, 平常會在 http://www.sanbrandstudio.com/ http://delphi.ktop.com.tw/ 以及Delphi深度論壇出沒. |
wscken
初階會員 發表:28 回覆:75 積分:45 註冊:2003-08-05 發送簡訊給我 |
不好意思,可以請問一下嗎?
當我想要編譯原始碼的時候,都會出現 Build [Error] Unit1.pas(82): Invalid compiler directive: 'REGION' [Error] Unit1.pas(118): Invalid compiler directive: 'ENDREGION' [Fatal Error] ShowDownloadProgress.dpr(5): Could not compile used unit 'Unit1.pas' 請問,這是我的環境問題嬤?? 還是我應該要怎麼樣解決@.@ ------------------------------------------------------------------------- 原來如此 抱歉,因為還是在用7 所以沒有想到是版本的問題,可以使用了,感謝您喔 ^^
編輯記錄
wscken 重新編輯於 2007-05-16 17:20:44, 註解 無‧
|
Jasonwong
版主 發表:49 回覆:931 積分:581 註冊:2006-10-27 發送簡訊給我 |
那真是太可惜了, 也許你可以轉戰 "祖國" 試試,
===================引 用 dennieschang 文 章=================== Sorry, 這應該在筆者的書上面發表的, 但這本書出版之日目前看來還是遙遙無期... 因為出版社 跟我說, 現在 Delphi 的書沒銷量... 他們不想出...
------
聰明的人,喜歡猜心;雖然每次都猜對了,卻失去了自己的心 傻氣的人,喜歡給心;雖然每次都被笑了,卻得到了別人的心 |
dennieschang
一般會員 發表:2 回覆:24 積分:15 註冊:2002-03-13 發送簡訊給我 |
|
zxf_1
一般會員 發表:0 回覆:1 積分:0 註冊:2007-05-19 發送簡訊給我 |
|
Stallion
版主 發表:52 回覆:1600 積分:1995 註冊:2004-09-15 發送簡訊給我 |
|
ddddd688
一般會員 發表:8 回覆:8 積分:3 註冊:2007-01-30 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |