Delphi löst ein WITH gerne so auf:
Delphi-Quellcode:
function StartfrUnterschrift:TModalResult;
var
AutomatischGenerierteVariable: TfrUnterschrift;
begin
//with frUnterschrift do
AutomatischGenerierteVariable := frUnterschrift;
begin
frUnterschrift := TfrUnterschrift.create(Application);
try
result := AutomatischGenerierteVariable.ShowModal;
finally
AutomatischGenerierteVariable.release;
frUnterschrift:=nil;
end;
end;
end;
Und jetzt mag gern jemand raten, was da nun passiert.
Und wozu gibt es da überhaupt eine globale Variable "frUnterschrift", wo die ja scheinbar nicht außerhalb benutzt wird, oder etwa doch?
Delphi-Quellcode:
function StartfrUnterschrift: TModalResult;
begin
with TfrUnterschrift.Create(Application) do
begin
try
Result := ShowModal;
finally
Free;
end;
end;
end;
Beim Release wird das Free nicht sofort ausgeführt, sondern verzögert "irgendwann" später mal,
was auch gerne Probleme erzeugt und vorallem beim Focus ist uns das schon schmerzhaft auf die Füße gefallen.
Und das "Start" im Namen stimmt auch nicht wirklich, denn das Fenster wird erzeugt (gestartet), verarbeitet (ShowModal) und wieder beendet (Release/Free).