Hallo allerseits,
in meinem Programm verwende ich DLLs fuer einzelne Module. Diese DLLs exportieren jeweils eine Form, welche ich zur Laufzeit lade.
Wenn ich nun das Programm beende, erhalte ich immer folgende Fehlermeldung:
Zitat:
Project D:\...\NAMP.exe raised too many consecutive exceptions: '
access violation at 0x01147dc2: read of address 0x00000014'. Process Stopped. Use Step or Run to continue.
Hier mal ein bisschen Code damit das Ganze verstaendlich wird. Die einzelnen Forms speichere ich in einer ObjectList:
Delphi-Quellcode:
//Load modules
Modules := TObjectList.Create(False);
DLLHandle := LoadLibrary(PChar(IncludeTrailingPathDelimiter(ExtractFilePath(Application.ExeName))+'
TestModule.dll'));
if DLLHandle = NULL
then
begin
ShowMessage('
Could not load DLL');
Application.Terminate;
end;
//if DLLHandle = 0 then
ProcAddr := GetProcAddress(DLLHandle, PChar('
GetDLLFrm'));
if ProcAddr =
nil then
begin
ShowMessage('
Invalid DLL');
Application.Terminate;
end;
//if ProcAddr = nil then
Modules.Add(TGetDLLFrm(ProcAddr));
with TForm(Modules.Items[0])
do
begin
Languages.SetFormLanguage(LangIndex, TForm(Modules.Items[0]));
Parent := bxapMain;
Align := alClient;
BorderStyle := bsNone;
Visible := True;
end;
//with Modules.Items[0] do
Die Verwendung funktioniert ganz normal. Im OnDestroy des Mainforms mache ich folgendes:
Delphi-Quellcode:
for i := Modules.Count-1 downto 0 do
begin
TForm(Modules.Items[i]).Free;
Modules.Delete(i);
end; //for i := Modules.Count-1 downto 0 do
Modules.Free;
FreeLibrary(DLLHandle);
DLLHandle ist ein private-Member der Formklasse, genau wie Modules. Nach dem Aufruf von FreeLibrary bekomme ich allerdings den oben beschriebenen Fehler. Kann mir jemand helfen?
Thanx and Greetz
alcaeus