Ich weis es nicht. Immer beim Beenden kommen Speicherlecks zum Vorschein. Irgendwo steckt der Wurm drin.
Wenn du sagst, dass
DLL-Forms ok sind, dann beginne ich nochmal von vorne. Da die Fehler beim Entladen auftreten, möchte ich nochmal kurz zeigen, wie ich die
DLL-Forms lade und entlade. Vielleicht mache ich schon was falsch...
DLL.dpr
Delphi-Quellcode:
//Form erstellen
procedure TCalendar.InitPlugIn;
begin
Form1:=TForm1.Create(nil);
end;
//Form anzeigen, wenn gewünscht
procedure TCalendar.Execute();
begin
Form1.Show;
//Form1.StartUp;
end;
//Form entladen
procedure TCalendar.FreeForms;
begin
FreeAndNil(Form1);
end;
function LadePlugIn(Parent: THandle; var PlugIn: TProJurisPlugIn): Boolean;
begin
try
PlugIn := TCalendar.Create(Parent);
Result := True;
except
Result := False;
end;
end;
exports
LadePlugIn;
das PlugIn wird bei Programmstart geladen und erstmal wieder entladen. Der Sinn ist, dass das Hauptprogramm sieht, welches PlugIn installiert ist und macht Menüeinträge. Wenn der User auf den Menüeintrag klickt, dann wird das PlugIn wieder mit LoadLibrary geladen. Beim Beenden des PlugIns wird es mit "FreeForms" entladen.
Ist doch generell richtig und sauber, oder?