[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
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 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 23

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?
What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.


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

Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

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

In this tutorial I will show you how to use the Windows Speech API in Delphi. I will only cover basic functions such as text to speech and controlling the speed of the speech. SAPI Installation First you need to install the SAPI type library, th…
Introduction Raise your hands if you were as upset with FireMonkey as I was when I discovered that there was no TListview.  I use TListView in almost all of my applications I've written, and I was not going to compromise by resorting to TStringGrid…
Michael from AdRem Software outlines event notifications and Automatic Corrective Actions in network monitoring. Automatic Corrective Actions are scripts, which can automatically run upon discovery of a certain undesirable condition in your network.…
In this brief tutorial Pawel from AdRem Software explains how you can quickly find out which services are running on your network, or what are the IP addresses of servers responsible for each service. Software used is freeware NetCrunch Tools (https…
Suggested Courses
Course of the Month4 days, 21 hours left to enroll

636 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