Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#11

AW: Exception ''access violation ' beim beenden des Programms

  Alt 24. Mär 2014, 19:10
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).
$2B or not $2B
  Mit Zitat antworten Zitat