AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Überprüfen ob ein Objekt existiert aber wie?
Thema durchsuchen
Ansicht
Themen-Optionen

Überprüfen ob ein Objekt existiert aber wie?

Ein Thema von Schuster · begonnen am 3. Jan 2005 · letzter Beitrag vom 27. Dez 2020
 
Medium

Registriert seit: 23. Jan 2008
3.688 Beiträge
 
Delphi 2007 Enterprise
 
#35

AW: Überprüfen ob ein Objekt existiert aber wie?

  Alt 16. Jun 2013, 00:00
Halten wir doch einfach hier fest:
Eine gültige von einer ungültigen Referenz zu unterscheiden ist im allgemeinen Fall unmöglich, es sei denn man achtet SELBST darauf entweder den Zeiger bei Freigabe zu NILen, oder zumindest den Speicherbereich so zu deformieren, dass solch ein try...ecxept klappen kann. Der einzige andere Weg wären entweder Interfaces (danke Referenzzählung), oder eine eigene Implementierung einer Basisklasse, die ähnlich wie Interfaces agiert.

In praktisch allen anderen Fällen ist es immer möglich, dass ein freigegebenes Objekt zum Prüfzeitpunkt unangetastet im Speicher stehen geblieben ist, womit für das laufende Programm ohne Metainformationen keine Möglichkeit besteht eine Referenz auf diesen Speicherbereich als ungültig zu erkennen, da sowohl die Referenz als auch der referenzierte Speicher exakt gleich aussehen können wie vor der Freigabe des Objektes. End of Story.

(Man könnte höchstens noch versuchen sich in den Speichermanager zu hängen, um dort zu gucken ob die entsprechenden Blöcke als frei markiert wurden. Aber selbst dann: Es könnte dort bereits ein neues Objekt erstellt worden sein, so dass der Speicher als belegt zählt, und schon würde man wieder auf die Nase fallen. Am Ende also auch nur ein schöner Trick, der aber nicht allgemeingültig funktioniert.)
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)

Geändert von Medium (16. Jun 2013 um 00:03 Uhr)
  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:17 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