7
votes

The situation is the following. Typically I use RAD Studio 2010 for Delphi development. I have some components I would like to redistribute in binary form (*.bpl without source). But I would like people to be able to use them despite of their Delphi version. But, for example, dcu files can be used only by compiler version, which generated them. Almost the same situation is with bpl files as I know. Every bpl file will require corresponding VCLXX.bpl library depending on Delphi version. How do I make my bpls, compiled in 2010 to be able to be used in Delphi7, 2007 etc?

Is the only solution to have ALL Delphi versions installed and compile bpl files separately in each?

4
potential 'bonus' question: are 'full' Delphi versions (no upgrades) required to build these BPL files? For example, after upgrading from Delphi 7 to Delphi 2010, does the license allow to distribute BPLs created with the original Delphi 7 version and files created with the Delphi 2010 upgrade?mjn
Yes, @mjustin, that's allowed. People do it all the time. My impression is that's what all component vendors do.Rob Kennedy
Most Delphi developers refuse to use components distributed without sources - exactly because you can't use a newer version of Delphi until updated packages are available, and if those packages becomes unmantained you have a problem.user160694

4 Answers

7
votes

Yes, that's the only solution. Each compiler produces DCUs and BPLs specific to it's own version. The only exception I'm aware of is that Delphi 2006 and 2007 share the same format.

3
votes

To distribute compiled code that can be used by multiple compiler versions, distribute an ordinary DLL, not a BPL. Packages and units are version-specific.

Create standalone functions that you export in the C style, or create COM objects that get registered with the OS.

It doesn't have to change your entire development strategy, though; it could be a DLL that uses the BPL, so you can keep all the work you've already put into the package.

1
votes

You could create an obj file in c++ builder and link that in Delphi, distribute a small pas file (header). The c++ builder obj format hasn'tchanged from delphi 7 to 2009 (I can confirm 2010 but I think it will be the same as well).

You would need to test though if this would be possible for visual/designtime components.

0
votes

I can create an installer that get the the installed Delphi versions on machine. Choose for witch Delphi you want to create de bpl and call the correspondent Dcc by command line to generate the correspondents bpl and install in Delphi. You can look in JVCL installer to get as example.

Att.