Hallo,
bin immernoch auf der Suche nach den "Lecks". Hab jetzt rausgefunden, dass jede dynamisch erstellte Form 26kb nach dem free hinterlässt. Das macht bei 4 forms 104kb. Dazu kommen noch 4-12kb, die beim FreeLibrary übrig bleiben. Ist das richtig?
Es passiert folgendes:
1. Hauptprogramm wird geladen.
2. Ein PlugIn wird durch den Nutzer geladen. (Dazu der Code)
Delphi-Quellcode:
PlugIn:
procedure TKalender.CreateForms;
begin
Form1:=TForm1.Create(nil);
Form2:=TForm2.Create(nil);
Form3:=TForm3.Create(nil);
Form4:=TForm4.Create(nil);
end;
3. PlugIn wird irgendwann wieder beendet. (Dazu der Code)
PostMessage(FindWindow(nil, 'Mein Hauptprogramm), WM_UNLOADPLUGIN, HInstance, 0);
4. Das Hauptprogramm schließt das PlugIn
Delphi-Quellcode:
procedure TForm2.UnloadPlugIn(var msg: TMessage);
var
hndl: Integer;
i: Integer;
begin
hndl:= msg.WParam;
for i:=0 to High(PJPlugIn) do
begin
if(PJPlugIn[i].PlugInHandle = hndl) then
begin
PJPlugIn[i].PlugInName.FreeForms;
FreeLibrary(PJPlugIn[i].PlugInHandle);
PJPlugIn[i].PlugInTitel:='';
PJPlugIn[i].PlugInFile:='';
PJPlugIn[i].PlugInName:=nil;
PJPlugIn[i].PlugInHandle:=0;
end;
end;
PJPlugIn:=nil;
end;
5. Die Prozedur FreeForms im PlugIn sieht so aus:
Delphi-Quellcode:
Form1.Free;
Form2.Free;
Form3.Free;
Form4.Free;
Mach ich da was falsch? Es sind alle Komponenten in den Forms freigegeben. Wenn ich ein neues PlugIn mit einer Form erstelle, bleiben 26kb übrig.
Danke