这几天工作不忙,在公司闲着没事,逛逛sourceforge,忽然发现排名第二位的Ares居然是Delphi编写的。正是俺的老本行。下载下来瞄~一下。看一下下面的文本文件,头小发懵~这么多第三方控件!算了,今天反正闲着,试试看吧。
首先就是回到俺以前的Delphi7上,要不是2006所带的重构工具和IDE实在太诱人,俺还是觉得Delphi7的界面友好,大概是习惯的缘故吧。
下面开始漫漫的安装控件的历程。
ARES_VCLs、JVCL和Dspack还算顺利,直接按照下载的地址下来就玩了。JVCL早就听说过,以前都是抠俩函数出来玩玩,今天干脆直接点了他的Install( 安装做的不错,怪不得人家牛那),安装完还是吃了一惊,多了一堆东西......JVCL......
去下载TNT,发现人家的老窝已经被端了。大概卖给别人了。到了新窝,下了一个for delphi7的,发现已经没有源代码了。(不爽)暂时忍耐吧。先完成目标再说。
开始编译,上来就报少了什么属性。WebBrower,这不是Delphi自带的控件嘛。先Cancel再说,编译少SHDocVw_TLB单元。这是啥东西?去Ares的Help上Sos一下。翻了n页,都到2005年了。大概是倒数第二个问题就是关于Compiler错误的。里面有关于这部分的介绍.http://sourceforge.net/forum/forum.php?thread_id=1356068&forum_id=384788。还有关于Jedi.inc的错误的。好多高级的Delphi控件里都有inc这东西,大概了解了一下。明天再研究吧。今天先搞定这个。一并解决了俩错误。看来看看help就是有好处啊。可惜太累了。杂不弄个FAQ那。
再打开工程,不报错误了,窃喜一下~~.编译还是失败~~~~。出来了一堆错误(这会也记不清是什么了~)。大概是函数参数类型不对,某某函数没有一类的吧。估计是Delphi的控件常见错误,新控件升级后把以前的老函数删掉或者变形了。找找老版本的吧。一般这种有名的控件包网上肯定有老版的。Google了一下,看来TNT也是个常见控件,网上一大堆,在“问友源码”下了两个,用了一个感觉还是不行,也不记得怎么不行了。又下了个,这是网址http://dl3.winu.cn/down/control/tntunicodecontrols.zip。
再次编译,依然失败之~~~~一个是Wideinputquery函数的类型不对,一个是缺少Tnt_RemoveDirectoryW函数。再次Google。找到了老版本TNT代码,Tnt_RemoveDirectoryW函数,手工添加上去吧。
function Tnt_RemoveDirectoryW(lpPathName: PWideChar): BOOL;
begin
if Win32PlatformIsUnicode then
Result := RemoveDirectoryW{TNT-ALLOW RemoveDirectoryW}(PWideChar(lpPathName))
else
Result := RemoveDirectoryA{TNT-ALLOW RemoveDirectoryA}(PAnsiChar(AnsiString(lpPathName)));
end;
Wideinputquery实在找不到,看一下。估计前两个参数是计算位置的。干脆屏蔽掉,不影响大局。
编译成功~~~~
另外需要注意的一点就是Delphi7的编译进度默认是不打开的,在这个程序中有一个helper_supernode_crypt单元,警告大概有3,4千个,编译时还以为Delphi当了。骗的我重启了几次Delphi。后来打开进度一看,原来是警告过多的缘故,后来干脆加了句{$WARNINGS OFF},屏蔽掉了。编译速度大大加快。
整个工程编译起来,如果不存在版本问题的本来应该问题不大。可是没办法,Delphi的一直就是这样,特别是新控件功能增加了很多,可是对老函数的支持却不好。很讨厌。都说Delphi的程序员爱用控件,其实VC的程序员又何尝不是呢。不过是弄个包,工程里只见一个头文件。现在在公司做的工程,都把控件包放在文件夹里(怕被以后接手我工程的人骂~)。在网上没有这样空间的条件,还是希望他们也能把手头开发中使用的控件打个包,哪怕说清楚控件版本也好啊。让我们这些看代码的人方便些,本来就已经开发源代码了。还搞得这么麻烦干嘛。虽说网上可以下载,可天知道你用的哪个版本啊。只能根据软件开发的日期对照控件的日期去猜。天啊。。。呵呵。大家都是Delphi程序员,就相互帮助下吧。