![]() |
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. |
Nicht gerade viele Informationen, aber hat es die Fehlermeldung nur aus der IDE heraus gegeben, oder auch beim "normalen" Ausführen?
|
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. |
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. |
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!) |
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. |
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. |
Moin Minz,
FreeAndNil macht nichts anderes als
wäre also verwunderlich, wenn's nicht ginge ;-) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:35 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