[Fatal error]Internal Error L3169

Posted on 2003-11-12
Last Modified: 2010-08-05
[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.
Question by:EKIM
  • 3
  • 2
  • 2
  • +4

Expert Comment

ID: 9731723
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.
LVL 22

Expert Comment

by:Ferruccio Accalai
ID: 9731735
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 :(

LVL 12

Expert Comment

ID: 9731809
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?
Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.


Expert Comment

ID: 9732030
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.

Expert Comment

ID: 9733439
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.




Author Comment

ID: 9737771
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 ?


Expert Comment

ID: 9737873
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
 - ...

Expert Comment

ID: 9738368
>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."

Accepted Solution

gmayo earned 500 total points
ID: 9741364
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.

Author Comment

ID: 9746055
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.

LVL 12

Expert Comment

ID: 9746128
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.


Expert Comment

ID: 9746662
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.

Featured Post

Free Tool: Site Down Detector

Helpful to verify reports of your own downtime, or to double check a downed website you are trying to access.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

This article explains how to create forms/units independent of other forms/units object names in a delphi project. Have you ever created a form for user input in a Delphi project and then had the need to have that same form in a other Delphi proj…
Objective: - This article will help user in how to convert their numeric value become words. How to use 1. You can copy this code in your Unit as function 2. than you can perform your function by type this code The Code   (CODE) The Im…
Two types of users will appreciate AOMEI Backupper Pro: 1 - Those with PCIe drives (and haven't found cloning software that works on them). 2 - Those who want a fast clone of their boot drive (no re-boots needed) and it can clone your drive wh…

830 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question