• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 269
  • Last Modified:

loading packages dynamically which have duplicate classnames

How can I load packages dynamically which may have duplicate classnames?

For example

I have two packages

Package 1 contains, say 500 forms

Package 2 contains another 1000 forms

Most of the forms in each package depend or relate to each other in some degree.

Also a number of forms in each package (say 50) refer to a form(s ) in the other package.

For example, we have a contact management package. One of the forms in this allows the user to perform a sales order inquiry - but this is in the Sales Package. The Sales order inquiry pulls in say, Stock Inquiry. This is in the Stock Module.

What we now have in the Contact Manager module, when it is built, the Sales Order inquiry screen is compiled (together with all it's dependencies) and also the Stock Inquiry screen (together with all it's requirements).

Loading the Stock Module is fine.

Loading the Contact Manager results in EFilerError " A Class named xxxx already exists..".

Now, these classes are going to be the same.

Is there anyway of suppressing/ignoring this error and loading the complete Contact Manager module.

If not, can you suggest a way to overcome the above situation.



  • 2
1 Solution
I am guessing you are having the same class name used in 2 different units. is that so? (you can check by searching for the class name in all files (using total commander for example or some other file manager). if that is tha case, you need to either merge the 2 units or at least class definition, or rename one of them.
there is no way of having 2 different class definition with the same name loaded at design time. you will have to somehow make it one.
if what I say is not what you have, maybe an exact example will help better understand your situation and fix it.
steve-westAuthor Commented:
Hi Ciuly:

I'd pretty much resigned myself to what you've just explained.

I'm having to ensure that a class reference is held in a only one module (package). The cross-module referencing means that this is a really painful and laborious task (I didn't realise it also extended to units - you can only have a unit referenced in a single package - not multiple!!!).;

Thanks for your help.



well, the other solution is not to load the packages into the ide, and only add it to each project you will work with (since you will not be using both packages in the same projet... are you? if you do, then you otehr solution is to not even add the packages to teh project, but add the units to the project searchpath. AND keep in mind that in a uses clause if you have:

uses unit1, unit2;
and unit1 has a TMYClass class definition and so does unit2, then  the actual class used will be the one form unit2.

so, if you also need to use the same 2 different classes with the same definition in the same unit, your only solution is to add the unit name in front like:

var c1:unit1.TMYClass; c2:unit2.TMYClass;

in which case c1 will be of a different type then c2. but of course this approach means you will have to pay a very very much attention to uses clauses and var/property declarations otherwise there will be a mess.
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Get your problem seen by more experts

Be seen. Boost your question’s priority for more expert views and faster solutions

  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now