Sanyo Moura writes:
Quote
I finally have my Delphi 8 SP2 working fine again. What I have done?
1. Uninstalled Delphi 8
2. Uninstalled .NET 1.1
3. Uninstalled .NET 1.1 SDK
4. Booted my Notebook
5. Installed .NET 1.1
6. Installed .NET 1.1 SDK
7. Installed Delphi 8
8 Installed Delphi 8 SP2
These steps are incomplete. Add a step 3.1 to delete *.dcpil on the
hard disk.
The .dcpil files are the only part that have difficulty with the .NET
1.1 SP1.
Reason: The .NET 1.1 SP1 assemblies (mscorlib, etc) contain new
symbols, and the metadata tokens for old symbols have been renumbered.
The Delphi compiler uses those tokens in symbol identity calculations
that are stored in the .dcpil compiler symbol caches.
Normally, this would not be a problem because an assembly that is
modified to contain additional symbols would have a different time/date
stamp than the original assembly that the .dcpil file was built from.
However, Microsoft service packs do not update the assembly version
number or the file date/time stamp even though they change the contents
of the assembly.
I openly admit that using the token values in symbol identity
calculations was a poor choice on my part. My error was in believing
the assembly file timestamp would change if the tokens ever changed.
Silly me.
We're working on a solution. It will probably involve either softening
the symbol identity calculation to not include CLR tokens at all or
changing the version check to tolerate CLR token flutter or some
combination of both. I am hopeful that a solution can be worked out
that will not require breaking the Delphi 8 DCU format, but I haven't found
that solution yet.
-Danny
--
Delphi Compiler Core:
homepages.borland.com/dthorpe/blog/delphi/