Link to home
Start Free TrialLog in
Avatar of EKIM
EKIM

asked on

[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.
EKIM
Avatar of GloomyFriar
GloomyFriar

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.
Avatar of Ferruccio Accalai
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?
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.

Regards,

JGMS

Avatar of EKIM

ASKER

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 ?

Ekim
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."
ASKER CERTIFIED SOLUTION
Avatar of gmayo
gmayo
Flag of United Kingdom of Great Britain and Northern Ireland image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of EKIM

ASKER

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;
begin
   GlobalCeiling :=  Min( TotfinRes ,TotfinRes* CashFlowRatio );
end
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.

regards
Mike
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.