Delphi-PRAXiS
Seite 3 von 7     123 45     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi "Unsterbliche" Klassen (https://www.delphipraxis.net/58928-unsterbliche-klassen.html)

NicoDE 15. Dez 2005 13:11

Re: "Unsterbliche" Klassen
 
Zitat:

Zitat von Neutral General
(Bin am Rumbauen^^: Meine Klasse überlebt schon :

Delphi-Quellcode:
Klasse.Free;
Klasse.Destroy;
Klasse.FreeInstance;
FreeAndNil(Klasse);
TAndereKlasse(Klasse).Free
MUHAHAHAA ^^)

Jemand könnte auf die Idee kommen die Klassen-Definition in der Exe zur Laufzeit zu patchen...

Neutral General 15. Dez 2005 13:18

Re: "Unsterbliche" Klassen
 
Hehe ich glaube ich weiß sogar wie ich das abwenden kann :mrgreen:

jim_raynor 15. Dez 2005 13:29

Re: "Unsterbliche" Klassen
 
Im Prinzip gibts eine ganz einfache Methode. An Adresse null steht immer der Zeiger auf die VMT (virtual Method Table) in der die Verweise zu den überschrieben Methoden drin stehen. Man muss ganz einfach die Adresse der VMT auf die von TObject umlenken :lol: Dann funktioniert auch wieder der Aufruf von FreeInstance. hehe.

Neutral General 15. Dez 2005 13:47

Re: "Unsterbliche" Klassen
 
Bis jetzt müsst ihr noch keine Angst haben -.-^^
Mein Problem im Moment ist :

Delphi-Quellcode:
Meine(Un)VerwundbareKlasse := nil;
-.-^^

Und das abzuwenden ist irgendwie ein Problem grad :mrgreen:

malo 15. Dez 2005 13:51

Re: "Unsterbliche" Klassen
 
Zitat:

Zitat von Neutral General
Und das abzuwenden ist irgendwie ein Problem grad :mrgreen:

Das ist ja auch kein Zerstören. Damit löschst du ja nur den Zeiger auf das Objekt. Das Objekt liegt weiterhin im Arbeitsspeicher, nur das Programm weiß nicht mehr, wo das liegt. So in etwa :mrgreen:

Aber eventuell könntest du ja eine Standard-Property definieren, die du stattdessen auf Nil setzen würdest. Dann dürfte der Pointer noch auf das Objekt zeigen, aber ein anderer Pointer wird gelöscht... ;)

tigerman33 15. Dez 2005 13:56

Re: "Unsterbliche" Klassen
 
Funktionieren Standardproperties nicht nur für array-Eigenschaften?

Neutral General 15. Dez 2005 13:57

Re: "Unsterbliche" Klassen
 
Zitat:

Zitat von malo
Zitat:

Zitat von Neutral General
Und das abzuwenden ist irgendwie ein Problem grad :mrgreen:

Das ist ja auch kein Zerstören. Damit löschst du ja nur den Zeiger auf das Objekt. Das Objekt liegt weiterhin im Arbeitsspeicher, nur das Programm weiß nicht mehr, wo das liegt. So in etwa :mrgreen:

Aber eventuell könntest du ja eine Standard-Property definieren, die du stattdessen auf Nil setzen würdest. Dann dürfte der Pointer noch auf das Objekt zeigen, aber ein anderer Pointer wird gelöscht... ;)

Das hört sich irgendwie schon gut an.. Aber wie meinst du das mit der Property ?
Ich muss ja verhindern das

Delphi-Quellcode:
Klasse := nil;
seine Wirkung verliert, bzw das die Klasse schnell wieder ihren Zeiger wiederbekommt oder ihn erst gar nicht verliert..

Dax 15. Dez 2005 13:59

Re: "Unsterbliche" Klassen
 
Hey.. Eine Klasse besitzt ihren Zeiger nicht. Du besitzt den Zeiger auf die Klasse.. Also hilft nur, deinen Zeiger auf die Klasse mit einem Schreibschutz zu versehen.

malo 15. Dez 2005 14:01

Re: "Unsterbliche" Klassen
 
Ich weiß nicht, ob es wirklich funktioniert, aber ich dachte an sowas:
Delphi-Quellcode:
property Irgendwas: Pointer read fIrgendwas write fIrgendwas; default;
Eventuell funktioniert es ja. Ist jedoch nicht getestet.

Neutral General 15. Dez 2005 14:01

Re: "Unsterbliche" Klassen
 
Ah ja.. soweit zur Theorie... ^^
Und wie sieht die Praxis aus ? (Bitte wenigstens ein Ansatz, ich muss ja sagen das ich die Unverwundbare Klasse erfunden hab xD)


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:52 Uhr.
Seite 3 von 7     123 45     Letzte »    

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