Delphi-Quellcode:
aDLLForm:=aDLLForm.Create(Application); // <<<<<<<
Try
aDLLForm.ShowModal;
Finally
aDLLForm.Release;
End;
Das ist nicht fehlerhast, weil es in einer
DLL steht.
Das ist auch schon in einer EXE falsch.
Variable :=
Klasse.Create(Owner);
Man "kann" den Constructor zwar auch über eine Variable aufrufen, aber nur, wenn vorher der Objekt-Speicher reserviert und initialisiert wurde.
Und der Owner ist nicht wichtig, da die Klasse eh sofort wieder freigegeben wird. (der Owner ist sozusagen also schon das try-finally)
Release sendet nur eine Message an die Forms (PostMessage), welche dann irgendwann später verarbeitet wird.
PS: Auf soeine Weise wurde bei uns letztens mal ein ShowMessage in den Jordan gerissen.
Die eine modale Form wurde via ModalResult "geschlossen", danach wurde direkt eine MessageBox angezeigt.
Diese MessageBox hing sich an die ActiveForm, welche "noch" die modale Form war, da sie nicht "sofort" geschlossen wurde.
Viele Codezeilen später kam die
GUI dann dazu die Schließen-Message zu verarbeiten, gab die Form frei und nahm dabei die angehängte MessageBox mit.
(FastReport ist teilweise schon ein echt krankes Teil)