Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Self selber verändern ... erlaubt? (https://www.delphipraxis.net/133415-self-selber-veraendern-erlaubt.html)

himitsu 1. Mai 2009 15:19


Self selber verändern ... erlaubt?
 
Erstmal ... es funktioniert. :stupid:

Aber da ich grad nochmal so über Einiges nachdenk ......

In meinem himXML ist es ja nun möglich auch Node-Pfade anzugeben, was ich allerdings nachträglich implementiert und dabei nicht all zuviele am "alten" Code geändert hatte.

Im Grunde wird da am Anfang der Nodename in die Pfadbestandteile zerlegt und der aktuelle Node rausgesucht ... dann wird Self durch diesen Node ersetzt.

Heißt also es wird eine Objekt-Prozedur aufgerufen und (falls ein Nodepfad vorhanden ist) wird der Prozedur selber das eigene Objekt unterm Arsch weggezogen, dafür das andere Objekt (welcher allerdings vom selben Klassentyp ist) untergeschmugglt und dann einfach "normal" und nur mit anderen Objektdaten weitergemacht. :roll:


Also ich glaub jetzt nicht, daß ich daran jetzt wirklich nochmal was ändern werde, denn es läuft ja
(außer es finden sich wirklich große Gründe dagegen an).


Aber hat jemand damit Erfahrungen oder kann etwas zum Für und Wieder dieses Vorgehens sagen?
(ich weiß ja, daß es z.B. Probleme gibt bzw. geben kann, wenn man in einer Ereignisprozedur der VCL das eigene Objekt zu dieser Prozedur einfach so freigibt)

mschaefer 1. Mai 2009 16:19

Re: Self selber verändern ... erlaubt?
 
Die Verfahrensweise kenne ich von dem Ein / Aushängen von TreeNodes
So wie ich das sehe geht das unter Bedingungen

1: es handelt sich um Objekte einer Klasse ( ok logisch )
2. es sind keine Ereignisproceduren registriert ( hast Du beschrieben)

Letzlich kann der Compiler natürlich nicht kontrollieren was Du da machst.
Deshalb mußt Du sicherstellen, dass nie ein self mal nil wird.

Du hast damit mal wieder bewiesen, dass Du kein Eichenbrett auslässt..

Grüße // Martin

himitsu 2. Mai 2009 10:21

Re: Self selber verändern ... erlaubt?
 
Zitat:

Zitat von mschaefer
Die Verfahrensweise kenne ich von dem Ein / Aushängen von TreeNodes

gut, dann bin ich wenigstens nicht der Einzige, welcher sowas macht :stupid:

Zitat:

Zitat von mschaefer
Du hast damit mal wieder bewiesen, dass Du kein Eichenbrett auslässt..

ich weiß, ich bin böse :twisted:

nja, da ich den Code ja weitergeben möchte, wollt ich sichergehn, daß da keine all zu gefährlichen Dinge verbaut sind :angel2:

OldGrumpy 2. Mai 2009 11:24

Re: Self selber verändern ... erlaubt?
 
Wie sieht das denn speichertechnisch aus, gibts da keine Lecks? Das fällt mir so spontan dazu ein...

himitsu 2. Mai 2009 11:30

Re: Self selber verändern ... erlaubt?
 
es ist praktisch so, daß die Objektfunktion mit einem Objekt aufgerufen und dann nur auf eine anderes existierendes Objekt umgebogen wird.
Beide Objekte existieren vorher und nachher.



Objekt1.Funktionsaufruf
Objekt1 auf Objekt2 umbiegen
mit Objekt2 wird nun weitergearbeitet und dieses verändert/ausgelesen

praktisch so, als wenn Objekt2.Funktionsaufruf ausgeführt worden wäre.

himitsu 2. Mai 2009 13:32

Re: Self selber verändern ... erlaubt?
 
OK, ich hatte doch einen Fehler drin ... falls meine Funktion ParseNodePath keinen passenden Node fand, setzte sie Self auf NIL :nerd: und da einige Funktionen selbst im Fehlerfall das Self noch brauchten ...... nja, ist jetzt behoben und Self wird nur noch im Erfolgsfall auf ein "richtiges" Objekt abgeändert :angel:

alzaimar 2. Mai 2009 13:58

Re: Self selber verändern ... erlaubt?
 
Ist aber nicht mehr so richtig OOP, gell? Geht eher in Richtung des sog. HABDAK-Paradigmas*, das sich bei einigen Mitgliedern eines nicht näher genannten Forums, das sich auf eine eher exotisch, aber sehr charmante Programmiersprache spezialisiert hat, großer Beliebtheit erfreut..:stupid:

* HABDAK = "Hacken bis der Arzt kommt"

himitsu 2. Mai 2009 14:34

Re: Self selber verändern ... erlaubt?
 
http://fnse.de/S01/0MI.gif

Zitat:

Zitat von alzaimar
Ist aber nicht mehr so richtig OOP, gell?

Ich wüßte jetzt nicht wieso nicht? :angel2:

Immerhin hat Borland/Codegear diesen Parameter nicht als CONST definiert, also wird man ihn doch ändern würfen? :nerd:

Zitat:

Zitat von alzaimar
Mitgliedern eines nicht näher genannten Forums, das sich auf eine eher exotisch, aber sehr charmante Programmiersprache ...

ich frag mich nur welches das ist http://fnse.de/S01/0AN.gif

igel457 2. Mai 2009 14:59

Re: Self selber verändern ... erlaubt?
 
Ich finde es ebenfalls nicht so schön an "self" herumzuspielen. Ich würde an deiner Stelle die betroffenen Funktionen als Klassenfunktion deklarieren und das Objekt, das bearbeitet werden soll, als Parameter übergeben.

mschaefer 2. Mai 2009 15:01

Re: Self selber verändern ... erlaubt?
 
OOP ist das schon, aber noch mit soviel Pointer
dass man es nicht einfach auf Java umsetzen kann.
Dafür muß man dann schon mit der Klasse arbeiten.
// Grüße Martin


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:58 Uhr.
Seite 1 von 2  1 2      

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