2008年8月13日 星期三

BCB中Indy元件問題(IdHTTP, IdTCPClient)

Indy9

----------------------------

Borland C++Builder (BCB) 6.0 是一套非常優秀的 RAD形式的視窗程式設計語言。BCB6.0與BCB5.0的版本差異裡面,一個重要的區別在於BCB6.0有內建Indy元件,他可以幫助你更快速撰寫網路程式元件。





比方說你要用HTTP去Get一個頁面,或是去Post一個網頁動作,可以透過IdHTTP來進行動作。如果是想要發一個TCP封包,則可以用IdTCPClient去發。這些元件都幫我們把底層的事情做掉了

開發人員甚至可以不用去管Protocol要用的東西就可以輕易設計出想要的網路程式功能。



但是如果真的有嘗試去使用BCB6.0的Indy工具,就會發現BUG非常多!最常見的就是程式卡死。用Indy當中的IdHTTP1去Get一個網頁,看似用IdHTTP1->Get(URL)就好?



結果就是程式執行到此段,就立刻死機了,完全不給你再往前跑了~



這個問題根本原因在於Indy元件本身的BUG,BCB6.0內建給我們的是Indy8.0,而他本身有一些已知使用上的問題。新版的Indy就有解決這些問題,不過大多數人都直接使用BCB6.0灌好後的內建Indy,當然就問題一堆啦~



不多說,那要怎麼解決這個問題呢?當然,必須更新Indy元件的版本,請放心,此元件是能免費更新的呢!




目前被認為較穩定的版本為9.011,你可以點選此連結下載或到官方網站找你想要的版本。



下載完後,依據下列步驟,即可完成更新:

(1)移除 BCB6 中原本的 Indy

(1.1)放入原本安裝 BCB6 的光碟片,選擇「C++ Builder 6」

(1.2)在 Borland C++ Builder 6 Enterprise Edition - Installation Wizard 中,按「Next」

(1.3)在「Program Maintenance」Dialog 中,選擇「Modify」然後按「Next」

(1.4)在「Custom Setup」Dialog 中,點選「Program Files/Indy」節點,並選擇「Do not Install」然後按「Next」

(1.5)剩下的步驟都按「Next」就可以將 BCB6 中原本的 Indy 給移除了



(2)安裝新版本的 Indy (9.0.11)

(2.1)將下載的檔案 IndyWin32_9_00_11_Src.zip 解壓縮至目錄 C:\Indy (解壓縮後會多一個子目錄 C:\Indy\Source)

(2.2)執行檔案 C:\Indy\Source\Fullc6.bat (Command line)

(2.3)執行完成以後,會多一個子目錄 C:\Indy\C6



(3)在 BCB6 中設定新版本的 Indy (9.0.11)

(3.1)開啟 C++ Builder 6.0 (在開啟的過程中會出現連結不到 Indy Lib 的提示 Dialog,選擇 Yes 跳過)

(3.2)在 BCB6 中選擇「Tools/Environment Options」

(3.3)在「Environment Options」Dialog 中,選擇「Library」Tab

(3.4)在「Library Path」欄位中加入字串「;C:\Indy\C6」,然後按「OK」Button

(3.5)在 BCB6 中選擇「Project/Options」

(3.6)在「Project Options」Dialog 中,選擇「Packages」Tab

(3.7)按「Add」Button,並將檔案指向 C:\Indy\C6\dclIndy60.bpl

(3.8)在「Project Options」Dialog 中,選擇「Directories/Conditionals」Tab

(3.9)在「Include Path」及「Library Path」兩個欄位的最前面,分別加入字串「C:\Indy\C6;」

(3.10)在「Project Options」Dialog 中,將左下角的「Default」打勾,然後按「OK」Button

(3.11)把 BCB6 關閉,然後重新開啟,如果不會出現(3.1)中的 Dialog 的話,就代表已經設定成功




接著你就可以使用這些Indy元件,輕易地創作你的網路視窗程式了!


沒有留言: