[Fatal error]Internal Error L3169

[D7, XP]
Hi all,
when I build My project, I always get this error : [Fatal error]Internal Error L3169 and I don't know why.

I have tryed :
   restart Delphi
   restart system
   Set the last new Code lines in coment (as far as i remember)
   Compile the project on another system
   Delete all .dcu files

what can I do in order to remove this <#censored#> error ?
The question point value is 500 cause of it'sextremely urgent.
Thanks forany idea.
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

I've solved the same error by commenting parts of code.
After the problem part of code was founded the only way to solve the problem was manually code rewriting.
Ferruccio AccalaiSenior developer, analyst and customer assistance Commented:
There's some DBExpress units dcu included in uses clause?
In my System for example, adding the DbExORA (Oracle driver) unit to the uses clause give me the same error and running the project from ide causes an immediatelly restart of the machine (W2K Sp4 and D6 Up2)...Someone had the same problem too and solved it using the Dll without any link in the uses clause....

If this is the case try removing the DBExpress units from uses and look what happens...Since now i've never found a good solution for this error....and nothing is mentioned about this in Borland SIte too :(

Delete the tds file as well, then make sure you force a full rebuild.

Duff CR/LF line-ends can also cause problems. Can you tell roughly which line (or even which module) is causing the problem?
Get expert help—faster!

Need expert help—fast? Use the Help Bell for personalized assistance getting answers to your important questions.

Delete the block of code around where the error occurs and rewrite it. It's a pain in the backside but from my experience it seems to be the only way out.

Geoff M.
Open the code in wordpad with the wordwrap option set to off. Do a minor change (add a space or something) and save the file. That will do with CR/LF errors.

Go to the Borland site and download the patches (registrated users have access only).
Install the patches.

Good luck, that's also needed.



EKIMAuthor Commented:
Hi All

Thanks for all your ideas, but none of those seems to solve my problem.
After deep looking (and a big headache) I found this:
I have a class that owns  1077 published properties. If I set 20 of those in comment : I do not get the error anymore, If I removethe comments, the error come back...

It seems to mean that a Class cannot have more that 1057 published properties ??
Does anybody can tell me more about this ?

L3169: Unexpected condition in the linker (capital L like linker). The error occurs in source line 3169 (not your source but Borlands).
Sometimes it is possible to avoid the error by stupid things like:
 - Renaming variables
 - Removing variables
 - Adding more variables
 - Restructure code
 - Split procedures / functions
 - Merge procedures / functions
 - Migrate to next version of Delphi
 - Wait for bugfix
 - Rebuild all
 - Split units
 - ...
>Thanks for all your ideas, but none of those seems to solve my problem.
You've said: " If I set 20 of those in comment"
I've recommended you in my first post: "I've solved the same error by commenting parts of code."
Commenting out parts of the code doesn't sound like the best of ideas - after all why write it only to comment it out later?!?!?!

Having 1057 properties in a single class seems a bit over the top. Perhaps you need to break it down into descendant classes. For example, if you had a THuman class, maybe you need to split it into a TMale and a TFemale class. That way all the cooking and cleaning properties can go into the TFemale class and the TMale class has nothing to do with it... er oops, maybe I shouldn't go there!

Geoff M.

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
EKIMAuthor Commented:
Gloomyfair : yep, but If i manually rewrite the code (as you sugested), the error came back, and I need this code. this is just a proof that the problem comes from the number or properties. it doesn't solves it.
gmayo : You are right. But I would prefer toavoid this solution.This class has 1057 float properties, all of them are a result from financial calculation. for each property there is a method that compute the result. something like this :

Procedure Calc_GlobalCeiling
Procedure Calc_TotFinResult
Procedure Calc_CashFlowRatio

Property GlobalCeiling : Float  read... write ...
Property TotFinResult  read ... write ...
Property CashFlowRatio read... write ...

Procedure MyClass.Calc_GlobalCeiling;
   GlobalCeiling :=  Min( TotfinRes ,TotfinRes* CashFlowRatio );
And so on for all the 1057 properties. (and I have +/- 1000 properties to add...).

GMayo : Be sure that if nobody can help me with compiling this class with its 1057 properties, the points will be yours.

Surely you don't need them all to be published?

And, rather than separate properties, how about a function:

GetResult( resulttype )
where resulttype is an enum for the one you want.

You could even do this as an array property.

That also has the advantage of, when coding using this component, you can do things like iterate through all the values in a loop, rather than having to fetch them separately, with unique property names each time.

I propose commenting just as a method to localize the problem.
And it's seems to me that EKIM have used it after my post.
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today

From novice to tech pro — start learning today.

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.