Here are a few more questions that I thought were worth another post.
Are the Standard/Pro/Architect versions of the Delphi source code separated by having
$IFDEF’s in the code?
We use a combination of techniques for handling the
different SKU’s but for the most part IFDEF’s are not how it’s done. The IDE is
broken into numerous Delphi packages (see your Delphi bin directory *.bpl) which
include a set of “core packages” that make up the main part of the IDE.
Additional packages are developed which contain various features and we’re
extremely careful to ensure that packages don’t inadvertantly link to packages
outside of their designated SKU. In addition to separate packages there is also
code that controls when a package is allowed to be used with a particular SKU.
When you build Delphi is there lots of hints and warnings?
There are both hints and warnings generated during the build however,
whether they would be considered “a lot” on a percentage basis I can’t say but I
seriously doubt it. I don’t believe it’s a high percentage just based on the
frequency of checkins I see with comments like “cleaning up hints/warnings” so
I’d say we stay on top of the situation. Of course, some warnings (like
“specific to a platform”) are acceptible so they wouldn’t really count if we had
to actually calculate some sort of percentage. As a team I’d say we take hints
and warnings pretty seriously as should all developers.
Any third-party components used in the Delphi Source?
Yes. I’ll start a list here off the top of my head and add to it later
if/when another R&D engineer points something out (in no particular order):
- Mike Lischke’s Virtual Treeview
which is used in (and there may be other places):
- Project Manager
- Structure Pane
- Message view
- Refactoring Window
- JclDebug exception
- Indy which is used in a number of places like the ASP.NET Deployment
- Microsoft‘s MSHTML
control for the Welcome page, HTML/ASP.NET designer does that count?
- W3C’s HTML Tidy
all that comes to mind right now, it’s a pretty short list and at least one
reason is that we want/need to avoid licenses that could get us into trouble.
stack dialog. Thanks Hallvard!