Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Prüfen ob ein Objekt existiert (https://www.delphipraxis.net/2124-pruefen-ob-ein-objekt-existiert.html)

Minz 7. Jan 2003 23:54


Prüfen ob ein Objekt existiert
 
Hallo,

wie kann ich prüfen, ob ein Objekt existiert?

Ich hab ein array

Meinarray: of MeinObjekt;

Ich will dieses Array durchlaufen und schauen, ob bereits eine Speicherzelle auf ein Objekt verweist.

Mit try hats irgendwie nicht geklappt. Ich habe mit try versucht eine Eigenschaft des Objektes auszulesen,
nur das Objekt gabs eben noch nicht. Ich vermute das deswegen eine Fehlermeldung ausgegeben wird
(Access Violation oder so).

Danke schonmal für Antworten.

nailor 8. Jan 2003 00:07

Nicht gerade viele Informationen, aber hat es die Fehlermeldung nur aus der IDE heraus gegeben, oder auch beim "normalen" Ausführen?

Minz 8. Jan 2003 01:15

weiß nicht genau was du mit IDE meinst :oops:

aber die Fehlermeldung kommt wenn ich ausführe.
Aber erst wenn das Programm an besagter stelle
versucht die Eigenschaft des Objektes zu lesen.

Christian Seehase 8. Jan 2003 02:06

Moin Minz,

Du wirst kaum sicher feststellen können, ob ein Array Element wirklich auf ein Objekt zeigt.
Wenn Du das Objekt mit Free wieder zerstörst, bleibt die Ursprüngliche Adresse der Daten in der Variablen erhalten.
Nur wenn die Variable nil enthält, weisst Du sicher, dass sie nicht auf ein Objekt zeigt.
Ansonsten könnte sogar das ausprobieren einer Methode oder Abfragen einer Eigenschaft als Test schiefgehen, weil zufällig noch entsprechende gültige Daten dort stehen könnten.

Minz 8. Jan 2003 10:38

Verdammich aber noch eins :bounce1:

Was mach ich denn da nun? kann ich denn
das Objekt "freen" und dann die entsprechende
Array-Stelle manuell auf nil stellen?

Wie frage ich ab, ob da ein nil ist?
(Habe Nilpferde noch nie so gemocht,
und der Nil soll ziemlich dreckig sein!)

Christian Seehase 8. Jan 2003 10:55

Moin Minz,

aus diesem Grunde gibt es, seit Delphi 5, die Prozdure FreeAndNil.

Mit der wird beides auf einmal gemacht. Das angegebene Objekt freigegeben und der Pointer auf nil gesetzt.

In Versionen vor D5 muss man den zweiten Teil selbst erledigen.

Minz 8. Jan 2003 11:15

Danke Christian,

wie es aussieht hats mit FreeAndNil geklappt.
Zumindest gibts keine Meckerei mehr und ich
kann aus dem Array beliebig löschen und setzen.

Christian Seehase 8. Jan 2003 12:42

Moin Minz,

FreeAndNil macht nichts anderes als
  1. die Methode Free für das übergebene Objekt aufzurufen, und anschliessend
  2. die Variable := nil zu setzen

wäre also verwunderlich, wenn's nicht ginge ;-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:29 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