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

时间:2012-12-07 07:09:53

标签: delphi ide indy indy-8

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

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

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

  • 在IDE中打开\delphi6\source\indy\dclindy.dpk
  • 点击“包裹”窗口中的“编译”
  • 点击项目菜单中的“构建dclIndy”
  • 点击“包裹”窗口中的“安装”

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

我做错了什么?

1 个答案:

答案 0 :(得分:5)

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

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

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

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