如何使用Delphi 6修改Indy 8 IdMessage.pas?

Wit*_*292 4 ide delphi indy indy-8

我有一份Delphi 6和一个使用Indy TIdMessage组件的简单电子邮件程序.我想删除IdMessage.pas然后重新编译应用程序的第464-465行.我很难找到清晰的文档,所以我尝试了这些步骤来修改组件:

  • \delphi6\source\indy\indy.dpk在IDE中打开
  • 双击IdMessage.pas在包窗口
  • 编辑IdMessage.pas并保存文件
  • 单击"包"窗口中的"编译"
  • 单击项目菜单中的"Build Indy"
  • 单击"包"窗口中的"安装"

但后来我得到了一个错误\bpl\indy60.bpl can't be loaded because \bin\indy60.bpl is already loaded.所以我在"组件"菜单中尝试了"安装包...",但只在\bpl\dclindy60.bpl那里找到了.所以我删除了那个包,并且:

  • \delphi6\source\indy\dclindy.dpk在IDE中打开
  • 单击"包"窗口中的"编译"
  • 单击项目菜单中的"生成dclIndy"
  • 单击"包"窗口中的"安装"

IDE确认TIdMessage已安装所有组件(包括),但电子邮件程序仍然表现为原始未修改组件仍在使用中.

我究竟做错了什么?

Dav*_*nan 5

如果您使用的是运行时包,那么您需要确保程序找到新的包文件.bpl.

但您可能没有使用运行时包.因此,运行时程序使用位于Delphi安装文件夹中的.dcu文件静态链接Indy代码.特别是在这种情况下<ProgramFiles>\Borland\Delphi6\Lib\IdMessage.dcu.您需要确保链接新代码.最简单的方法是将修改后的文件添加到项目中.这意味着修改后的版本会被编译并链接到您的程序中.

由于您的修改位于设备的实施部分,因此您需要做的就是这些.如果修改在接口部分,您将遇到"单元X使用不同版本的单元Y编译"错误.您可以通过将其余的Indy源添加到项目中来解决这个问题.

需要强调的一点是,您永远不应该修改Delphi安装文件夹下的文件.如果要对这些组件进行修改,请复制这些文件并对这些副本进行修改.

  • @mike:我是Indy图书馆开发人员之一.在我开发Indy的过程中,我完全删除了所有预先安装的Indy文件,并重新配置IDE以指向我的开发文件.但这只是我的选择,不是必需的.您可以使用重新编译的文件替换预先安装的文件,也可以保留它们(如果需要),只需重定向IDE和/或单个项目即可使用单独的副本. (3认同)