AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Prüfen ob ein Objekt existiert

Ein Thema von Minz · begonnen am 8. Jan 2003 · letzter Beitrag vom 8. Jan 2003
Antwort Antwort
Minz

Registriert seit: 19. Dez 2002
476 Beiträge
 
#1

Prüfen ob ein Objekt existiert

  Alt 8. Jan 2003, 00:54
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.
  Mit Zitat antworten Zitat
Benutzerbild von nailor
nailor

Registriert seit: 12. Dez 2002
Ort: Karlsruhe
1.989 Beiträge
 
#2
  Alt 8. Jan 2003, 01:07
Nicht gerade viele Informationen, aber hat es die Fehlermeldung nur aus der IDE heraus gegeben, oder auch beim "normalen" Ausführen?
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
Minz

Registriert seit: 19. Dez 2002
476 Beiträge
 
#3
  Alt 8. Jan 2003, 02:15
weiß nicht genau was du mit IDE meinst

aber die Fehlermeldung kommt wenn ich ausführe.
Aber erst wenn das Programm an besagter stelle
versucht die Eigenschaft des Objektes zu lesen.
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#4
  Alt 8. Jan 2003, 03: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.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Minz

Registriert seit: 19. Dez 2002
476 Beiträge
 
#5
  Alt 8. Jan 2003, 11:38
Verdammich aber noch eins

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!)
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#6
  Alt 8. Jan 2003, 11: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.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Minz

Registriert seit: 19. Dez 2002
476 Beiträge
 
#7
  Alt 8. Jan 2003, 12: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.
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#8
  Alt 8. Jan 2003, 13: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
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 18: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