If you put a breakpoint in System._StartExe
and examine the InitTable that gets passed in, you'll notice that InitTable.UnitCount
is greater than InitTable.TypeInfo.UnitCount
. Unfortunately, neither of these records are documented very well. Does anyone know what these two numbers represent and why they're different? I assume InitTable.UnitCount is the total number of units in the application. But what's the other one?
views:
55answers:
1
+3
A:
I believe that
- PackageInfoTable.UnitCount
counts the units stored in the UnitInfo
array, where each record holds the initalization and finalization code pointers for the units parts of the package.
- PackageInfoTable.TypeInfo.UnitCount
along with ...UnitNames
references the Units containing some TypeInfo
stored in the TypeTable
(real Type Info or unit boundary marker).
A unit can contain some Init/Finit code but no TypeInfo to gather and reciprocally, hence the difference...
FYI, look at procedure ChangeFinalizationsOrder
in MemCheck.pas to see how they hack the InitTable (up to D2006)...
François
2010-08-06 01:28:06