AGB  ·  Datenschutz  ·  Impressum  







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

Wie zu Laufzeit Objekt löschen?

Ein Thema von daywalker-dj-k · begonnen am 25. Feb 2004 · letzter Beitrag vom 25. Feb 2004
Antwort Antwort
daywalker-dj-k

Registriert seit: 27. Nov 2003
85 Beiträge
 
#1

Wie zu Laufzeit Objekt löschen?

  Alt 25. Feb 2004, 18:34
hallo,
ich erzeuge zur laufzeit einige objekte (tedit+ tlabel). diese möchte ich danach allerdings wieder löschen um sie später ggf. wieder zu erstellen (mit dem gleichen namen). wie mache ich das? kleiner denkanstoss dürfte reichen. mir schwirrt irgendwie noch der begriff "destructor" im hinterkopf. muss ich so einen benutzen?

danke
gruß
tkliewe
  Mit Zitat antworten Zitat
Alexander

Registriert seit: 28. Aug 2002
Ort: Oldenburg
3.513 Beiträge
 
Turbo Delphi für .NET
 
#2

Re: Wie zu Laufzeit Objekt löschen?

  Alt 25. Feb 2004, 18:40
Versuche mal:
FreeAndNil(Button1);
Alexander
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Wie zu Laufzeit Objekt löschen?

  Alt 25. Feb 2004, 18:41
Achja, wo wir grad dabei sind

Button1.Free; und
Button1.Destroy; gibt's ja auch, was bewirken dann diese beiden Codeschnipsel?
  Mit Zitat antworten Zitat
Benutzerbild von nailor
nailor

Registriert seit: 12. Dez 2002
Ort: Karlsruhe
1.989 Beiträge
 
#4

Re: Wie zu Laufzeit Objekt löschen?

  Alt 25. Feb 2004, 19:20
...dass der jeweilige Knopf "zerstört" wird. Allerdings schlägt Destroy fehl, falls es den Knopf noch garnicht gibt.

[hoffentlich hab ichs nicht verdreht]
Michael N.
http://nailor.devzero.de/code/sharpmath/testing/ --- Tests, Feedback, Anregungen, ... aller Art sehr willkommen!
::: don't try so hard - it'll happen for a reason :::
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Wie zu Laufzeit Objekt löschen?

  Alt 25. Feb 2004, 19:34
Free prüft, ob es das Objekt gibt und ruft dann den Destruktor des Objektes (Destroy) auf. Gibt es das Objekt gar nicht, wird der Destruktor nicht mehr aufgerufen. Deswegen sollte man immer Free nehmen statt Destroy direkt aufzurufen.

Noch wichtig: Hat man ein Objekt zerstört, existiert es im Speicher nicht mehr, der Zeiger zeigt aber immer noch auf die Adresse im Speicher wesswegen Assign immer noch True liefert, ein Zugriff aber fehlschlägt, da das Objekt ja nicht mehr existiert. Deswegen sollte man entweder FreeAndNil zum Freigeben nutzen oder den Zeiger explizit auf nil setzen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  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 22: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