AGB  ·  Datenschutz  ·  Impressum  







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

Warum macht ein TForm.Close nicht NIL

Ein Thema von Eurowig · begonnen am 8. Mai 2008 · letzter Beitrag vom 8. Mai 2008
 
Muetze1
(Gast)

n/a Beiträge
 
#11

Re: Warum macht ein TForm.Close nicht NIL

  Alt 8. Mai 2008, 11:29
Zitat von Eurowig:
In der Delpi Hilfe steh:
Mit Release können Sie das Formular aus dem Speicher entfernen.

Dieser Info habe ich auch bisher Glauben gescheckt.
Ja und? Das wird doch auch erfüllt.

Deine Variable ist nur eine Referenz auf den Speicher des Formulars. Du bist wirklich der Meinung, dass Delphi einen riesigen Verwaltungsaufwand treibt um im folgenden Beispiel alle diese Variablen auf NIL zu setzen, weil sie alle auf das eine Formular verweist?

Delphi-Quellcode:
var
  Form1, Form2, Form3, Form4, Form5, FormWhatever: TForm;
begin
  Form1 := TForm.Create(nil); // eine Instanz
  Form2 := Form1;
  Form3 := Form1;
  Form4 := Form1;
  Form5 := Form1;
  FormWhatever := Form1;

  // Nun zeigen alle diese Variablen auf dieses eine Formular.

  Form1.Release; // Formular freigeben

  // Nun ist der vom Formular belegte Speicher freigegeben. Aber alle Variablen von Form1 bis FormWhatever
  // enthalten aber immernoch die Adresse die das Formular hatte. Nur der Speicher an der Adresse ist wieder
  // verfügbar.

  // Irgendwelche Zugriffe auf Form1 bis FormWhatever sind tödlich!

  // Delphi müsste einen riesigen Verwaltungsaufwand treiben um alle Variablen auf NIL zu setzen. Schon allein
  // folgendes setzt (natürlich) nicht gleich alle Variablen auf nil:

  Form1 := nil;

  // Hiernach sind Form2 bis FormWhatever noch immer mit der alten Adresse gefüllt.
Anderes Beispiel:

Ein Freund von dir zieht um und hat eine neue Adresse. Du schreibst seine neue Adresse in dein Adressbuch, aber trotzdem sind nicht automatisch alle anderen Stellen wo die Adresse vermerkt wurde mit geändert: Outlook Buch, Telefon, etc.

Die Variablen die die Instanz der Form aufnehmen sind an unterschiedlicher Stelle im Speicher und sind jeder für sich. Diese Variablen verweisen nur an eine Stelle mit der Form Instanz.
  Mit Zitat antworten Zitat
 


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:32 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz