Well, actually, the bugs are not really in the pascal compiler itself,
even if the documentation for it is quite thin. The problems are with
the linker which crashes for some unknown reasons. It seems it has been
fixed by update 4 for BCB6, but it is still there with BCB5. For
instance, one unit that compiles perfectly with BCB6 and Delphi5-6-7
generates a linker error under BCB5 like this one:
[Linker Fatal Error] Fatal: Type index 2147479547 is bad in module
Quite frankly I've rarely seen such a useless message. And we couldn't
get the file to work, because the simple fact of using the following
construct makes it crash:
TCommonDialogClass = class of TCommonDialog;
So we decided not to include this unit in the package for BCB5.
Another really annoying issue is that the project manager checks every
dependency for every package each time it is about to build one. Say for
instance that you have A.bpk and B.bpk in your bpg file with B requiring
Ensure no output file is available (clean install) then open the bpg
file. Choose 'Build all' and observe the message asking for the location
of A.bpi when it is about to build A.bpk !!!!! Now imagine this with 25
packages all requiring the very first one...
I've left a message on Quality Central about that, but didn't received
any comment yet. The solution we came up with was to tell our users
about this issue and give them a batch file to build the group file frm
the command line, where amazingly, the make tool works.
Finally, there is no way from the IDE to tell the pascal compiler where
to look for additional units. In Delphi, you have a line to set this up
in the Environment options, but this is not there in BCB. As a result,
we had to add ' -U"$(PATH)"' at the end of every PFLAGS node
so that it would check the directories from the PATH environment
variable. This comes from the fact that the JVCL requires the JCL to be
there and compiled. The recommended installation is that users put it
the same tree as the JVCL, and so our packages all use ..\..\JCL to
refer to the JCL location. But some users want to keep stuff even more
separate and as a result, the JCL is not at its expected place. The fact
that we can't specify such a basic thing in the IDE forced us to ask our
users to change their PATH environment variable...
If you want more insight on the adventures of the JVCL team in BCB's
search for posts by me, Leroy and Terry. You'll see heaps of fantastic
tales about legendary beasts !