Hallo,
in der
DEC (die ich ja "geerbt" habe) ist folgender Code drin:
Delphi-Quellcode:
Unit DECHashBase;
[..]
procedure ModuleUnload(Instance: NativeInt);
var // automaticaly deregistration/releasing
i: Integer;
begin
if TDECHash.ClassList <>
nil then
begin
for i := TDECHash.ClassList.Count - 1
downto 0
do
begin
if NativeInt(FindClassHInstance(TClass(TDECHash.ClassList[i]))) = Instance
then
TDECHash.ClassList.Remove(TDECFormat.ClassList[i].Identity);
end;
end;
end;
initialization
AddModuleUnloadProc(ModuleUnload);
TDECHash.ClassList := TDECClassList.Create;
finalization
RemoveModuleUnloadProc(ModuleUnload);
TDECHash.ClassList.Free;
end.
Der registriert eine Prozedor ModuleUnload, die irgendwie beim Entladen eines Packages
aufgerufen wird, soweit ich die F1 Hilfe für AddModuleUnloadProc verstehe.
In der ModuleUnload werden alle im globalen Klassenregistrierungsmechanismus der
DEC
(da kann man über eine ID den richtigen Algorithmus finden und eine Instanz davon erzeugen,
sofern der Algorithmus in dieser TDECHash.ClassList registriert ist.
Nun macht dieser ModuleUnload Code Ärger mit dem C++ Builder, der hat mit der Variable i
da drin scheinbar irgend ein Problem. Die Frage für mich ist aber: wozu brauche ich den
Code in ModuleUnload überhaupt? Reicht es nicht aus, dass ich diese Liste in finalization
freigebe?
Wenn diese Fragestellung geklärt ist, dürfte es auch zeitnah ein neues Rerlease 6.3 geben.
Grüße
TurboMagic