前面介绍了如何安装Indy10的最新版本,其目的是为了能在RO里使用最新的Indy10版本。
RO 5.0.29后才支持indy10.2.3新版本,目前,RO最新版本是5.0.31。因此这两个版本可以使用Indy10.2.3。
在RO的安装目录的Source目录下,我们找到Remobjects.INC文件,这个文件相当于是编译开关,根据需要控制不同的版本(如第三方的VCL)。
我们在这个INC文件里找到:{indy}。根据注释,我们可以清楚知道indy10.2.3被定义做Indy10C。
找到这段话:
{$IFDEF DELPHI10UP}
{$DEFINE RemObjects_INDY10}
{$DEFINE RemObjects_INDY10B}
只要改为:
{$IFDEF DELPHI10UP}
{$DEFINE RemObjects_INDY10}
{$DEFINE RemObjects_INDY10B}
{$DEFINE RemObjects_INDY10C}
即可,意思是,D2006/D2007均支持indy10.2.3
如果你是使用D7,以此类推,将其改为:
{$IFDEF DELPHI7UP}
{$DEFINE RemObjects_INDY10}
{$DEFINE RemObjects_INDY10B}
{$DEFINE RemObjects_INDY10C}
{$ELSE}
{$DEFINE RemObjects_INDY9}
{$ENDIF}
然后,重新编译Remobjects对应控件包,如果你是使用D2007,则
打开BuildPackages_D2007.bpg包,只需选择一下的包(DPK):
由于RO默认是使用indy9,因此,必须手工删除 包里的 Indy*.DCP,凡是在Requires含有的indy的DCP都要删除,然后 Builder,系统会提示手工新加载 indy10.2.3的DCP文件。到此大功告成!
根据我个人经验,indy10要比indy9在效率和稳定性提高不少。如果在RO里使用indy,建议使用长连接方式,即KeepAlive=True方式。当然,indy也不是无所不能,,如果并发数小于300,indy效率还是蛮高。
但Indy10接口确实很混乱,光是indy10,在RO都分为ABC三个接口版本。
说来说去,还是忍受一下,indy编程还是很简单高效。