AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Variable mit Instanz belegt oder nicht???

Ein Thema von stoermi · begonnen am 4. Jan 2005 · letzter Beitrag vom 4. Jan 2005
Antwort Antwort
stoermi

Registriert seit: 1. Dez 2004
Ort: im Wald von Thüringen
75 Beiträge
 
Delphi 6 Enterprise
 
#1

Variable mit Instanz belegt oder nicht???

  Alt 4. Jan 2005, 14:38
Hallo!
Ich habe in einer Klasse eine Variable, in der eine Instanz einer anderen Klasse gespeichert werden kann. Dort muss aber keine Instanz gespeichert sein.
Wie bekomme ich nun raus, ob in der Variable eine Instanz gespeichert ist, oder nicht???
Ich möchte die Instanz der ersten Klasse löschen, zuvor aber noch falls vorhanden, die in der Variable liegende Instanz der anderen Klasse.
  Mit Zitat antworten Zitat
Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Variable mit Instanz belegt oder nicht???

  Alt 4. Jan 2005, 14:46
Delphi-Referenz durchsuchenAssigned()
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat
stoermi

Registriert seit: 1. Dez 2004
Ort: im Wald von Thüringen
75 Beiträge
 
Delphi 6 Enterprise
 
#3

Re: Variable mit Instanz belegt oder nicht???

  Alt 4. Jan 2005, 14:51
Danke!
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.882 Beiträge
 
Delphi 12 Athens
 
#4

Re: Variable mit Instanz belegt oder nicht???

  Alt 4. Jan 2005, 15:40
Assigned ist zwar eine Bedingung
aber keine hinreichende Bedingung
um auf die Existenz einer Instanz
zu schließen.

Delphi-Quellcode:
Procedure Wegdamit(o:tObject);
Begin
  o.free;
end;

ObjVariable1 := TMeinObject.create;
ObjVariable2 := ObjVariable1;
Wegdamit(ObjVariable1);
(*
Hier viele Objekte erzeugen
*)

If assigned(ObjVariable2) then
  Showmessage(ObjVariable2.MeinStringAttribut);
Hier wäre eine Zugriffsverletzung das Resultat.
Das ist aber nicht immer so nur wenn der Speicher,
der ja mit o.free freigegeben wurde, schon von anderen
Objekten überschrieben wurde tritt der Fehler auf.
Andreas
Monads? Wtf are Monads?
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Variable mit Instanz belegt oder nicht???

  Alt 4. Jan 2005, 15:50
Das Problem hat man nicht, wenn man den Zeiger noch auf nil setzt - oder gleich Delphi-Referenz durchsuchenFreeAndNil benutzt
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.882 Beiträge
 
Delphi 12 Athens
 
#6

Re: Variable mit Instanz belegt oder nicht???

  Alt 4. Jan 2005, 16:03
Lucky , dann must du aber wissen wie viele Zeiger du auf das Object
hast und welche das sind. In diesem Fall Waren es 2.
Und eine FreeAndNil (oder bla.free; bla := nil; für Properties) Hilft
dir bei Object Parametern auch nicht viel weiter, die Variabeln
ausser halb der Methode haben weiterhin ihren Wert.

Das Einzige was hilft ist es IInterface mit _AddRef und _Release zu implementieren.

Oder man Prüft genau was man da programmiert, so das Objekte die an einem bestimmten
Ort erzeugt werden auch nur an einem (also Zentral) bestimmten Ort im Code zerstört werden.
Andreas
Monads? Wtf are Monads?
  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 11:47 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