AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Verständnisproblem bei onDestroy

Ein Thema von Prototypjack · begonnen am 1. Jan 2007 · letzter Beitrag vom 1. Jan 2007
Antwort Antwort
Prototypjack

Registriert seit: 2. Feb 2003
611 Beiträge
 
Delphi 2009 Professional
 
#1

Verständnisproblem bei onDestroy

  Alt 1. Jan 2007, 20:18
Moin!

Ich fange gleich an und gebe euch ein Beispiel für mein Problem:

Programm Unit(.dpr):
Delphi-Quellcode:
begin
  lfoo := TFoo.Create;
  lbar := TBar.Create;
  try
    Application.Initialize;
    Application.CreateForm(TForm1, Form1);
    Application.Run;
  finally
    lbar.Free;
    lfoo.Free;
  end;
end.
Wie ihr seht erzeuge ich zwei Klassen die Global gültig sind, mein Problem ist nur. Bei Application.Run; wird die Messageschleife ja normalerweise abgearbeitet und der Code bleibt stehen(in diesem Abschnitt), tut er auch, soweit so gut. Wenn ich meine Mainform schließe, läuft zuerst der Code in der DPR zu Ende und dann startet die OnDestroy Methode meiner Mainform. Warum ist das so? Das Problem, welches ich hiermit habe ist, dass ich im onDestroy Event der Form noch auf lfoo zugreifen muss, dieses aber nichtmehr vorhanden ist.

Momentan habe ich es, unschön wie ich finde, so gelöst, dass ich den Ressourcenschutzblock entfernt habe und einfach lbar und lfoo nach dem letzten Benutzen in OnDestroy freigebe. Das kann's doch nicht sein, oder?

Ich hoffe ihr könnt mir zu einer besseren Methode verhelfen.
Danke schonmal!
Gruß,
Max
Max
„If you have any great suggestions, feel free to mail me, and I'll probably feel free to ignore you.“ . Linus Torvalds
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#2

Re: Verständnisproblem bei onDestroy

  Alt 1. Jan 2007, 20:53
Das fällt unter die Kategorie "Fluch der globalen Formvariablen". Erstelle eine Instanz deiner Formklasse selbst und gib sie nach Application.Run wieder frei.
Wenn du nämlich den Non-OOP-Weg wählst, gibt Delphi automatisch die globale Forminstanz frei. Und zwar nach der letzten Anweisung .
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:35 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz