事情从我最近做的一个小项目开始。
因为要急着赶一个网络通信程序,我拿起了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++ 一样消失了。但是,计算机史上,曾经有一群技术狂人、有一个公司、有一个精灵……回忆将会永远留在心里,挥之不去……
后记:前文提到的那个线程出错的问题,被证实确实是一个 BUG,因为 Indy9.0.18 没有这个问题。到底还是高版本的软件好啊?但是为什么 Delphi 版本越高越糟糕呢?
本文转自网眼51CTO博客,原文链接:http://blog.51cto.com/itwatch/286536,如需转载请自行联系原作者