事情從我最近做的一個小項目開始。
因為要急著趕一個網路通訊程式,我拿起了4年不用的 Delphi(號稱 RAD 開發的老大啊),因為已經知道 Delphi 從 8.0 開始,Bug 不斷,還因為 8.0 以後的 Delphi 實在已經難以找得到了,我自然選擇了 7.0 版本。
因為是網路通訊程式,我選擇了 Delphi 引入的原來是第三方的 Indy 控制群組,聽說功能很強大,還據說 Delphi 以後就把自己的那個 TCP 的 Client 和 Server 原生控制項淘汰掉了,用 Indy 的相應控制項代替。因為是初用,就到 Delphi 的C:\Program Files\Borland\Delphi7\Demos 下去找例子,居然就沒有!
沒辦法,到網上去搜。找到了 Demo 。還好,在例子中找到一個 TCP 的 Client-Server 的 Demo,然後編譯、運行。馬上就發現一個 Bug,這個示範程式的功能還不錯,運行起來像個區域網路內的 QQ,電腦間能夠聊天。但是做這個 Demo 的老兄不知道當時在網路上實測過這個程式沒有,反正我看到,所有的用戶端串連到 Server 後,都被認為是一個“名字”,就是 Server 端機器的名字,而 Server 正是通過機器名來區分用戶端的,因為名字相同,所以就不能發送訊息了。其實嚴重的還在於,只要有一個用戶端沒有終止串連,那麼 Server 端退出時就會報告線程終止時出錯。--這簡直成了一個具有世界影響的錯誤了,在網上搜尋這個錯誤,達到一大片結果,各種奇形怪狀的解決辦法都有,但是感覺都不是正解。後來一個網友的回答說,升級到 Indy9.0.18 後問題解決了(D7本身帶的版本是 9.0.10)。於是我決定把 Indy 升級一下。
於是第二個麻煩又來了。因為曾經早已經領教過 Delphi 版本之間、VCL 組件之間版本不相容的折磨,心裡有陰影,所以我本來就比較害怕。於是就去 Indy 下了個號稱自動安裝的版本,而且為了保證 Bug 少一點,想裝個 10.0 版本。這個是號稱自動安裝的版本其實不是 Indy 的公司做的,不知道是不是 Indy 公司的那個老總的親戚近水得月,還是那個內鬼在洗錢呢?--扯回來--號稱自動安裝的組件包安裝後,拖個 Indy 組件一編譯,我靠,報錯!說是組件沒有那個屬性!沒有那個屬性,組件怎麼進入了組件面板了?
再次上網去搜,說是 Delphi 的各個版本卸載 Indy 的方法都不太一樣,由於 Delphi 安裝程式的失誤,卸載完畢,還在 Lib\Debug 下留下了一推 .dcu 檔案,有的遺留檔案還不止一處路徑,連 Windows 的系統檔案夾下都可能有--感覺有病毒的某種特徵了。
於是決定自己冒險實驗一下(說是冒險,是擔心把 Delphi 搞癱,又要花費半天功夫收拾系統了。還有,Delphi安裝到半路上出問題,很難再次直接安裝的)。
運行 Delphi7 檔案夾下的 Borland Delphi 7.msi 檔案,選修改(Modify),把 Indy 選掉,繼續,結束。再把 Lib\Debug 下以Id 開頭的檔案刪除(先備份一下)。然後,再運行 Delphi7.0 好了!
Delphi7.0 是好了,但是問題又來了,由於原來我下載的那個樣本程式是對 Indy9.0 的,現在 Indy 升級了,原來的那個例子就不能運行了!怎麼辦呢?降級吧!……好在有了2個小時的經驗,順利的又裝了一次 Indy9.0.18。
為什麼說“一個時代結束了,一個傳奇結束了!”?在 .NET 和 Java 的夾擊、打壓下,也許還有 Borland 那些官僚的瞎指揮和資本的脅迫下,10 年前曾經輝煌的 Delphi 如今已經老態龍鐘、漏洞百出了。我曾經購買的 Delphi2005 光碟片,安裝後編譯自己帶的 Demo 程式都過不去!四處出擊,產品眾多:C++、J++、C# 一堆 Builder,好像還出了個和 C 相關的東西。
從 Borland 分拆後的 Codegear,照樣在出新東西,Ruby on Rails 火了,就出了個它的 IDE。不知道有沒有 Phthon 的相關東西?!
沒有精品,連 Delphi 也給搞得四不像了。
雖然我承認我有“Delphi情節”,雖然現在的案頭開發 Delphi 照樣是最 RAD 的。但是,使用者流失、學習資料銳減(6年前書店裡電腦語言最多的書可能是Delphi),在支援 Web 開發上的失誤,都讓 Delphi 走下坡路了。我知道,10 年後,Delphi 也許就像10 年前獨步天下的 Borland C++ 一樣消失了。但是,電腦史上,曾經有一群技術狂人、有一個公司、有一個精靈……回憶將會永遠留在心裡,揮之不去……
電腦學習網:http://www.why100000.com
張慶 2007.9.20