Einzelnen Beitrag anzeigen

RaSoWa1

Registriert seit: 1. Jun 2006
Ort: Halle/Saale
140 Beiträge
 
Delphi 2010 Professional
 
#1

Zugriffverletzung beim Schliessen eines Formulars

  Alt 22. Nov 2008, 09:39
Hallo,
ich könnte mal wieder eure Hilfe gebrauchen.

Folgender Code wird nach dem Öffnen eines Child-Formulars aufgerufen:
Delphi-Quellcode:
procedure TFmAlbum.LoadAlbum(fn: string);
begin
  if Alb <> nil
  then Alb.Free;
  Alb := TAlbum.Create(Self); // Alb ist public in FmAlbum vereinbart.
  Alb.LoadFromFile(fn);
end;
LoadFromFile lädt u. a. Bilder und zeigt sie auf dem Formular in zur Laufzeit erzeugten TImage-Komponeneten an.
Das Formular wird mit folgendem Code geschlossen:
Delphi-Quellcode:
procedure TFmAlbum.FormDestroy(Sender: TObject);
begin
  if Alb <> nil
  then Alb.Free;
end;
Nun das Problem:
Die Prozedur LoadFromFile braucht ein paar Sekunden bis alles geladen, berechnet und angezeigt ist. Wenn in dieser Zeit das Formular mit dem BorderIcon biSystemMenu geschlossen wird, wird Alb im FormDestroy freigegeben, obwohl LoadFromFile noch läuft. Dies führt logischerweise zu Zugriffverletzungen.

Ich könnte diese Zugriffverletzungen mit try ... except abfangen. Das ist aber bestimmt nicht der richtige Weg.
Wie kann ich das Formular ohne Fehler schließen?

Schon mal Danke für die Hilfe.

Gruß Klaus.
Klaus
  Mit Zitat antworten Zitat