I have a copy of Delphi 6 and a simple email program that uses the Indy TIdMessage component. I want to remove lines 464-465 of IdMessage.pas then recompile the application. I’m having a hard time finding clear documentation, so I tried these steps to modify the component:
- opened
\delphi6\source\indy\indy.dpkin the IDE - double-clicked
IdMessage.pasin the Package window - edited
IdMessage.pasand saved the file - clicked “Compile” in the Package window
- clicked “Build Indy” in the Project menu
- clicked “Install” in the Package window
But then I get an error that \bpl\indy60.bpl can't be loaded because \bin\indy60.bpl is already loaded. So I tried “Install packages…” in the Components menu, but only found \bpl\dclindy60.bpl there. So I removed that package, and:
- opened
\delphi6\source\indy\dclindy.dpkin the IDE - clicked “Compile” in the Package window
- clicked “Build dclIndy” in the Project menu
- clicked “Install” in the Package window
The IDE confirmed all the components (including TIdMessage) were installed, but the email program is still acting as though the original unmodified component is still being used.
What am I doing wrong?
if you were using runtime packages then you’d need to ensure that your program found the new package file, the .bpl.
But you probably are not using runtime packages. So the runtime program statically links the Indy code using .dcu files located in the Delphi installation folders. Specifically in this case to
<ProgramFiles>\Borland\Delphi6\Lib\IdMessage.dcu. You need to make sure you link the new code. The easiest way is to add the modified file to your project. That will mean that the modified version gets compiled and linked into your program.Since your modifications are in the implementation section of the unit this is all you need to do. If the modifications were in the interface section you’ll encounter “Unit X was compiled with a different version of Unit Y” errors. You’d solve that by adding the rest of the Indy source to your project.
One point to stress is that you should never modify the files under the Delphi installation folder. If you want to build modifications to those components, take copies of the files and make modifications in those copies.