Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to handle project specific components in Delphi?

Let's say we have a team that works on many different projects. Each team member uses different set of visual/non-visual controls/components during it's development cycle. Since Delphi requires each component to be compiled and installed globally in the IDE, how to manage this situation while working with project which was started by the other team member?

It would be great if I could checkout the sources of a project from the version control and have the ability to compile it immediately. I don't care or sometimes don't know what visual or non-visual components are required for this project, I guess they all should be included in the project sources.

Maybe there are some tools which could read main project file or directory and compile/install all the needed components on project loading (and uninstall them when project is closed)?

How do you handle this issue in Delphi?

like image 439
Linas Avatar asked Oct 16 '12 17:10

Linas


3 Answers

In our company, we have the same problem. We solve this by forcing everyone to have all necessary library paths added to their delphi ide.

We are using an additional sdk/framwork repository which containins all components/sdks/frameworks of everyone . We keep a single text file, listing all libs with its version, install infos, etc. Everyone checks their wanted libraries, so we do not have double libraries or different versions.

Since we all work under Windows and since Delphi keeps its paths and (afaik) installed-components informations in the registry, we extracted these informations. We store for each used delphi version a .reg file within the sdk repository trunk.

So, if someone changes a framework, he updates the informations for everyone in the .reg files and commits it.

now, if someone wants to setup their dev-machine, they check-out the sdk, adds the e.g. xe2.reg informations to their registry, then check out the project and ... tada. compiling.

We have not tried to extract the "installed components" packages. thats on our to-do list. An alternative would be to keep a batch file for building and installing all sdk packages at once. But i do not know if installing components via commandline is possible in delphi.

Something like the JEDI installer would be nice. The installer detects installed Delphi versions and builds & installs everything nicely. A freely configurable version would be nice, so add all sdks -> install on each version.. perfect.

like image 195
Hugie Avatar answered Nov 17 '22 23:11

Hugie


Anyone who wants to compile a given project must first install any components that project is using. There is no getting around that, unless the project directly includes the components source code and instantiates the components in code instead of using a DFM. AFAIK, there is no IDE tool that will automated component (un)installation on a per-project basis for you.

like image 31
Remy Lebeau Avatar answered Nov 17 '22 23:11

Remy Lebeau


It's very wise to constraint which components and libraries that will be used by your team. If each member decide which component they will use, your final executable or packages will grow a lot and you can have some incompatibilities between libraries.

Besides, you can have extra costs buying and updating libraries that are very similar. Remember that each time Delphi is updated, you should buy new licences from most of that libraries.

So the best approach is:

  • ask which libraries each developer are using and discuss with them the real need of each one;

  • catalog those library required and install them on the machine that you will compile your final code;

like image 2
Josir Avatar answered Nov 17 '22 23:11

Josir