Einzelnen Beitrag anzeigen

Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#9

Re: FormClose erzeugt Exception - Washalb?

  Alt 2. Dez 2009, 01:39
Zitat von Sir Rufo:
Wieso sollten da noch Methoden aufgerufen werden? ... von der VCL?
Ja, die VCL ist noch nicht fertig mit dem Formular.
Delphi-Quellcode:
procedure TCustomForm.Close; // aus der VCL
var
  CloseAction: TCloseAction;
begin
  if fsModal in FFormState then
    ModalResult := mrCancel
  else
    if CloseQuery then
    begin
      if FormStyle = fsMDIChild then
        if biMinimize in BorderIcons then
          CloseAction := caMinimize else
          CloseAction := caNone
      else
        CloseAction := caHide;
      DoClose(CloseAction); // hier wird das Event OnClose aufgerufen
      if CloseAction <> caNone then
        if Application.MainForm = Self then Application.Terminate // ???
        else if CloseAction = caHide then Hide // ***
        else if CloseAction = caMinimize then WindowState := wsMinimized // ***
        else Release; // ***
    end;
end;
Jede Zeile, die mit *** markiert ist greift auf das Formular Objekt zu.
Aber das Objekt ist ja schon freigeben und deshalb kann es in jeder dieser Zeilen zu einer Zugriffsverletzung kommen.
Bei der Zeile markiert mit ??? bin ich mir selbst nicht sicher, aber auch hier besteht potentiell die Gefahr,
dass über verschlungene Wege auf das (freigebene) Formular Objekt zugegriffen wird.
fork me on Github
  Mit Zitat antworten Zitat