4

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

  • \delphi6\source\indy\indy.dpk在IDE中打开
  • IdMessage.pas在“包”窗口中双击
  • 编辑IdMessage.pas并保存文件
  • 在“包”窗口中单击“编译”
  • 单击“项目”菜单中的“构建 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)都已安装,但电子邮件程序仍在运行,就好像仍在使用未修改的原始组件一样。

我究竟做错了什么?

4

1 回答 1

5

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

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

由于您的修改位于单元的实施部分,这就是您需要做的所有事情。如果修改是在接口部分,你会遇到“Unit X was compiled with a different version of Unit Y”错误。您可以通过将其余的 Indy 源代码添加到您的项目中来解决这个问题。

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

于 2012-12-07T07:23:08.270 回答