Forum: Object-Pascal / Delphi-Language
Delphi
by LoRd-MuldeR,
9. Okt 2005
So schön einfach wie im Beispiel sieht die Sache leider nich aus :?
Mein Problem war ja auch hauptsächlich, dass ich dachte mein Objekt müsste wieder nil sein, nachdem ich .Free benutz hab. Weil das ja nich so war, hab befürchtet, ich hätte was vergessen bzw. falsch gemacht. Vorallem was den destructor angeht. Aber wenn das normal is, dass .Free einen "dangling pointer" hinterlässt, is ja...
Forum: Object-Pascal / Delphi-Language
Delphi
by LoRd-MuldeR,
9. Okt 2005
Das Problem lässt sich aber in meinem Fall nich so ohne weiteres Umgehen, da ich teilweise nich vorhersagen kann, ob das Objekt bereits zerstört wurde. Natürlich gäbe es da auch wege, das Problem anders zu lösen. Aber FreeAndNil(Obj) scheint doch ne ganz elegante Lösung zu sein!
Forum: Object-Pascal / Delphi-Language
Delphi
by LoRd-MuldeR,
9. Okt 2005
Okay, soweit verstanden.
Aber wozu is eine Referenz auf ein zerstörtes Objekt gut, so wie es .Free hinerlässt?
Das führt doch höchstens zu Exceptions, z.B. wenn man nochmal .Free benutzt!
Also werde ich dann zukünftig FreeAndNil(TObject) anstatt TObject.Free benutzen, um Probleme zu vermeiden.
Forum: Object-Pascal / Delphi-Language
Delphi
by LoRd-MuldeR,
9. Okt 2005
@Hansa:
Du solltest .Free anstatt .Destroy aufrufen, so viel is sicher.
Aber scheint so, als ob du das Objekt hinterher noch manuell auf nil setzten musst!
Ich denke am besten isses dieses FreeAndNil(TObject) zu benutzen, wie es Keldorn vorgeschlagen hat...
Forum: Object-Pascal / Delphi-Language
Delphi
by LoRd-MuldeR,
9. Okt 2005
Cool, danke für die superschnelle Antwort :-D
Warrum steht sowas nich in der Anleitung ???
Sollte ich dann also immer FreeAndNil(MyObj) anstatt MyObj.Free benutzen, damit der Speicher korrekt freigegeben wird?
Forum: Object-Pascal / Delphi-Language
Delphi
by LoRd-MuldeR,
9. Okt 2005
Hallo zusammen erstmal!
Ich hätte da mal en kleines Problem und hoffe hier kann mir jemand weiterhelfen :-D
Ich habe ein eigenes Objekt nach folgendem Schema definiert:
type
TMyObj = class(TObject)
public
constructor Create(Param:String);