AGB  ·  Datenschutz  ·  Impressum  







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

Bin ich schon zerstört?

Ein Thema von Sidorion · begonnen am 8. Nov 2005 · letzter Beitrag vom 9. Nov 2005
Antwort Antwort
Seite 1 von 3  1 23      
Sidorion

Registriert seit: 23. Jun 2005
403 Beiträge
 
#1

Bin ich schon zerstört?

  Alt 8. Nov 2005, 16:51
Kann man irgendwie herausfinden, ob die aktuelle Instanz bereits zerstört ist?
Im besonderen Fall rufe ich bei einer eventuell schon zerstörten Instanz eine Methode auf, wobei in dieser Methode auf einen Member der Instanz zugegriffen wird.
In der momentanen Implementierung ist dieser Methodenaufruf mit einem try .. except- Block gesichert, mich nerven aber die trotzdem auftretenden Delphi-exceptions mit Anhalten des Debuggers (nein ich will nicht 'bei Delphi-exceptions stoppen' ausschalten).
Ziel der Übung wäre, in der gerufenen Methode der evtl. schon zerstörten Instanz, eben diesen 'zerstört Status' abzuprüfen, ohne mit try except zu arbeiten und nur auf den Member zuzugreifen, falls die Instanz noch lebt.
Manchmal sehen Dinge, die wie Dinge aussehen wollen mehr wie Dinge aus, als Dinge
<Esmerelda Wetterwachs>
  Mit Zitat antworten Zitat
Benutzerbild von -NIP-
-NIP-

Registriert seit: 6. Jun 2004
Ort: Aachen
254 Beiträge
 
Delphi 7 Personal
 
#2

Re: Bin ich schon zerstört?

  Alt 8. Nov 2005, 17:01
Wenn mich nicht alles täuscht kann die Komponente doch garkeine Methode mehr ausführen, falls sie schon zerstört wurde?

Ich kenne nur Methoden, die es vor dem Createn ausführen kann.
Christian
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.202 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: Bin ich schon zerstört?

  Alt 8. Nov 2005, 17:01
Wie wird die Instanz zerstört?
Kann diese Instanz evtl. die entsprechende Referenz auf nil setzen?
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Bin ich schon zerstört?

  Alt 8. Nov 2005, 17:02
Delphi-Quellcode:
if assigned(myobj) then
 dosomething;
wenn der zeiger anständig nil gesetzt wurde nach dem zerstören.
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Sidorion

Registriert seit: 23. Jun 2005
403 Beiträge
 
#5

Re: Bin ich schon zerstört?

  Alt 8. Nov 2005, 17:07
@-NIP-: Methoden einer Klasse können IMMER ausgeführt werden, allserdings kann man auf die Member nur zugreifen, wenn ne instanz da ist.

@Bernhard: Die Instanz wird ganz normal zerstürt, habe aber zwei Zeiger drauf und die wissen voneinander nix.

@DGL-Luke: darum ist Assigned(MyObj) in dem Falle nach wie vor true, das ist ja das Problem. Wenn nicht, würd ich die Methode ja nicht mehr rufen.
Manchmal sehen Dinge, die wie Dinge aussehen wollen mehr wie Dinge aus, als Dinge
<Esmerelda Wetterwachs>
  Mit Zitat antworten Zitat
Benutzerbild von phXql
phXql

Registriert seit: 11. Mär 2004
Ort: Mühldorf
824 Beiträge
 
#6

Re: Bin ich schon zerstört?

  Alt 8. Nov 2005, 17:48
methoden einer klasse können nur aufgerufen werden wenn sie static sind.. die "anderen" methoden kann man nur aufrufen, wenn man auch eine instanz hat...
"Dunkel die andere Seite ist"
"Yoda! Halts Maul und iss deinen Toast!"
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

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

Re: Bin ich schon zerstört?

  Alt 8. Nov 2005, 17:51
Zitat von phXql:
methoden einer klasse können nur aufgerufen werden wenn sie static sind.. die "anderen" methoden kann man nur aufrufen, wenn man auch eine instanz hat...
Wenn das so wäre, wäre Free ziemlich sinnlos .
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Benutzerbild von phXql
phXql

Registriert seit: 11. Mär 2004
Ort: Mühldorf
824 Beiträge
 
#8

Re: Bin ich schon zerstört?

  Alt 8. Nov 2005, 17:53
Zitat von Khabarakh:
Zitat von phXql:
methoden einer klasse können nur aufgerufen werden wenn sie static sind.. die "anderen" methoden kann man nur aufrufen, wenn man auch eine instanz hat...
Wenn das so wäre, wäre Free ziemlich sinnlos .
Bei Free hat man ja auch schon eine Instanz, die man freigeben will
"Dunkel die andere Seite ist"
"Yoda! Halts Maul und iss deinen Toast!"
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#9

Re: Bin ich schon zerstört?

  Alt 8. Nov 2005, 18:08
man kann aber auch einfach auf eine "nil" instanz eine methode anwenden. Solange in der Methode (wie schon geschrieben wurde) nicht auf membervariablen zugegriffen wird kommt es da auch nicht zum Fehler.
TKlasse(nil).Methode; In diesem fall ist dann nur "Self" innerhalb der Methode nil
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

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

Re: Bin ich schon zerstört?

  Alt 8. Nov 2005, 18:13
Genau. Es wäre ja wirklich sinnlos, wenn in Free Self auf nil geprüft wird, aber schon beim Methodenaufruf wegen Self = nil eine Exception ausgelöst würde.
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 11:42 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