C++Builder and Delphi 10.3.2 Building Changed Files Patch Released

by Aug 14, 2019

An issue where changes to a file in the IDE would not be reflected in the compiled EXE is fixed

We’ve just released a patch for C++Builder and Delphi 10.3.2 that fixes the following issue:

  • In some situations, modifying a file in the IDE followed by making or compiling the project would not build the modified file into the resulting binary (RSP-25509, RSP-25590)

This issue would result in the built binary (such as your app) running, but not including the changes since the last time it was run.

The issue was visible for C++Builder more than Delphi, because of differences in how a C++ app is built and linked. For C++Builder, you could see this with source code changes, such as modifications in a .cpp file.

For Delphi, this would not affect modifications to source (.pas) files, but might affect other files such as resource (.res) files.

The patch is available at:

https://cc.embarcadero.com/item/30889

Full installation instructions are contained in the readme. Please read them carefully – there is one extra step that is not normally necessary, also noted below:

Very important note when installing

The patch contains a .Net assembly. When downloading through Microsoft Edge and possibly other browsers, metadata is attached to the zip file that it was downloaded. This metadata persists when extracting the .zip using Explorer (it does not persist when using other tools, such as 7zip.) Because of that metadata tag, the .Net runtime will refuse to load the assembly, preventing RAD Studio from starting. You must remove this metadata before placing the DLL in the RAD Studio bin folder.

To do so, either:

  • Use a non-Explorer tool to unzip the patch, such as 7zip, or:
  • Before copying the DLL to the RAD Studio bin folder, right-click it and select Properties, then check the “Unblock” checkbox next to the warning that the file came from another computer.

If you don’t do this, RAD Studio will not load and you will see an error message about loading an assembly, possibly followed by an access violation. This is caused by .Net not loading the assembly, and the IDE requiring it.