Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi self.free (https://www.delphipraxis.net/55907-self-free.html)

user0 28. Okt 2005 14:30


self.free
 
Hallo!

Ich möchte ein Objekt sich selbst zerstöhren lassen:

Delphi-Quellcode:
procedure TSpielstein.Rausschmeissen();
begin
  // Irgendwelcher Code...
  self.Free;
  self := nil;
end;
Leider kommt dann der Fehler "Ungültige Zeigeroperation!".
Was ist der Fehler? :gruebel:

faux 28. Okt 2005 14:39

Re: self.free
 
Dazu gibt es doch den Deconstructor, oder? :gruebel:

Grüße
Faux

PS: Zerstören schreibt man ohne h :wink:

RavenIV 28. Okt 2005 14:41

Re: self.free
 
das geht nicht, Objekte sind keine Selbstmörder.

ernsthaft:
der Compiler hat recht. Ein Objekt kann sich nicht selber zerstören. Woher soll denn dann der Computer wissen, was er bei´m Destructor machen soll wenn dieser schon zerstört wurde? Das würde ja in einer endlosschleife enden...

gruessle

Dax 28. Okt 2005 14:43

Re: self.free
 
Zitat:

Zitat von RavenIV
das geht nicht, Objekte sind keine Selbstmörder.

Nun, da muss ich dich enttäuschen ;) Ich weiß nicht mehr genau wie ichs damals geschafft hab, aber ich habe ein Objekt sich selbst zerstören lassen ohne Fehler zu produzieren. Ich such mal den Code..

user0 28. Okt 2005 14:48

Re: self.free
 
Das währe toll!

Im Notfall muss ich wohl eine Variable definieren, die beschreibt, ob das Objekt noch aktiv ist, oder nicht, so dass das Besitzerobjekt seinen Besitz zerstören kann. :mrgreen:

RavenIV 28. Okt 2005 14:55

Re: self.free
 
Zitat:

Zitat von user0
Das währe toll!

Im Notfall muss ich wohl eine Variable definieren, die beschreibt, ob das Objekt noch aktiv ist, oder nicht, so dass das Besitzerobjekt seinen Besitz zerstören kann. :mrgreen:

eigentlich ist es ja auch so gedacht, dass der, der ein Objekt erzeugt, es wieder zerstören soll.

sakura 28. Okt 2005 15:02

Re: self.free
 
Zitat:

Zitat von Dax
Zitat:

Zitat von RavenIV
das geht nicht, Objekte sind keine Selbstmörder.

Nun, da muss ich dich enttäuschen ;) Ich weiß nicht mehr genau wie ichs damals geschafft hab, aber ich habe ein Objekt sich selbst zerstören lassen ohne Fehler zu produzieren. Ich such mal den Code..

Self.Free ist kein Problem, allerdings kannst Du die "imaginäre" Referenz "Self" nicht auf nil setzen. Self ist immer nur ein übergebener const-Parameter, der automatisch übermittelt wird.

...:cat:...

Dax 28. Okt 2005 15:02

Re: self.free
 
Na ja, man kann sich auch selbst zerstören: FreeInstance(). Nur selbst begraben (Self := nil) ist unmöglich..

Wie sakura schon gesagt hat ;)

faux 28. Okt 2005 15:05

Re: self.free
 
ABer wozu denn das alles? Normalerweise zerstört man das Objekt doch mittels dem Deconstructor, oder? Derjenige der ´die Klasse erzeugt, muss sie nach dem Verwenden auch wieder zerstören. Oder?

Grüße
Faux

user0 28. Okt 2005 15:14

Re: self.free
 
Es ist im Moment einfach einfacher.
Es geht um Spielfiguren, die sich gegenseitig rausschmeißen.

Zu FreeInstance:

Wie kann man herausfinden, ob ein Pointer "ins leere" zeigt?
Auf nil kann ich ja nicht setzen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:33 Uhr.
Seite 1 von 3  1 23      

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