我知道,一个传奇结束了!我知道,一个回忆留下了

原创 2007年09月20日 05:19:00

     事情从我最近做的一个小项目开始。
    因为要急着赶一个网络通信程序,我拿起了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 

C++Primer第五版 2.3.2节练习

练习2.18:编写代码分别更改指针的值以及指针所指对象的值。 答案:见程序练习2.18   练习2.19:说明指针和引用的主要区别。 答:其实P49页就说得很好了。 指针引用都能提供对其他对...
  • fengzhanghao23
  • fengzhanghao23
  • 2015年09月10日 22:38
  • 1856

怎么知道java多线程都已经运行结束CountDownLatch

一、使用java.util.concurrent.CountDownLatch   Java的util.concurrent包里面的CountDownLatch其实可以把它看作一个计数器,只不过这个...
  • qishuo_java
  • qishuo_java
  • 2016年02月01日 21:36
  • 852

NYOJ 28 大数阶乘

大数阶乘 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述 我们都知道如何计算一个数的阶乘,可是,如果这个数很大呢,我们该如何去计算它并输出它? 输入输入一个整数m(0输...
  • liu940204
  • liu940204
  • 2015年07月23日 10:06
  • 325

有一个进程, 在朝某ip, port发数据, 在没有源码的情况下, 如何获知ip, port是多少呢?------还是用strace啦

最近遇到这样一个问题, 有一个进程, 在朝某ip, port发请求, 在没有源码的情况下, 如何获知ip, port是多少呢?        有的朋友可能会说, 抓包啊。 但问题是, 在机器上, 其他...
  • stpeace
  • stpeace
  • 2016年04月16日 21:54
  • 1136

linux视频驱动开发二之数据结构分析及操作流程(V4L2)

基于V4L2的视频驱动开发(2)                                                                                   ...
  • Jkf40622
  • Jkf40622
  • 2014年10月27日 09:45
  • 701

FZU - 2191 完美的数字

Problem 2191 完美的数字 Accept: 473    Submit: 1770 Time Limit: 1000 mSec    Memory Limit : 32768 KB  ...
  • AYZXX
  • AYZXX
  • 2017年06月03日 22:02
  • 234

个人学习笔记-0802

个人学习笔记
  • little_caiji
  • little_caiji
  • 2017年08月02日 12:24
  • 150

获取开始及结束日期间隔月份或年份列表

/** * 获取开始及结束日期间隔月份列表 * start格式 "2015-01-01" * end格式 "2016-01-01" * @param start * @param ...
  • dulinanaaa
  • dulinanaaa
  • 2016年11月01日 16:16
  • 708

你知道如何写一个框架吗?

定位 所谓定位就是回答几个问题,我出于什么目的要写一个框架,我的这个框架是干什么的,有什么特性适用于什么场景,我的这个框架的用户对象是谁,他们会怎么使用,框架由谁维护将来怎么发展等等。 ...
  • ayanami001
  • ayanami001
  • 2015年08月30日 12:46
  • 274

每天三道冲刺工作--假设你有一个用1001个整数组成的数组

题:假设你有一个用1001个整数组成的数组,这些整数是任意排列的,但是你知道所有的整数都在1到1000(包括1000)之间。此外,除一个数字出现两次外,其他所有数字只出现一次。假设你只能对这个数组做一...
  • hahavslinb
  • hahavslinb
  • 2015年05月06日 15:46
  • 399
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:我知道,一个传奇结束了!我知道,一个回忆留下了
举报原因:
原因补充:

(最多只允许输入30个字)