我有一份Delphi 6和一个使用Indy TIdMessage
组件的简单电子邮件程序。我想删除IdMessage.pas
的第464-465行,然后重新编译应用程序。我很难找到清晰的文档,所以我尝试了这些步骤来修改组件:
\delphi6\source\indy\indy.dpk
IdMessage.pas
IdMessage.pas
并已保存文件但后来我收到\bpl\indy60.bpl can't be loaded because \bin\indy60.bpl is already loaded
的错误。所以我在“组件”菜单中尝试了“安装包...”,但只找到了\bpl\dclindy60.bpl
。所以我删除了那个包,并且:
\delphi6\source\indy\dclindy.dpk
IDE确认已安装所有组件(包括TIdMessage
),但电子邮件程序仍然表现为原始未修改的组件仍在使用中。
我做错了什么?
答案 0 :(得分:5)
如果您使用的是运行时包,那么您需要确保程序找到新的包文件.bpl。
但您可能没有使用运行时包。因此,运行时程序使用位于Delphi安装文件夹中的.dcu文件静态链接Indy代码。特别是在这种情况下<ProgramFiles>\Borland\Delphi6\Lib\IdMessage.dcu
。您需要确保链接新代码。最简单的方法是将修改后的文件添加到项目中。这意味着修改后的版本会被编译并链接到您的程序中。
由于您的修改位于设备的实施部分,因此您只需要这样做。如果修改在接口部分,您将遇到“单元X使用不同版本的单元Y编译”错误。您可以通过将其余的Indy源添加到项目中来解决这个问题。
要强调的一点是,您永远不应该修改Delphi安装文件夹下的文件。如果要对这些组件进行修改,请复制这些文件并在这些副本中进行修改。