AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Self selber verändern ... erlaubt?

Ein Thema von himitsu · begonnen am 1. Mai 2009 · letzter Beitrag vom 2. Mai 2009
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.136 Beiträge
 
Delphi 12 Athens
 
#1

Self selber verändern ... erlaubt?

  Alt 1. Mai 2009, 15:19
Erstmal ... es funktioniert.

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.


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)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von mschaefer
mschaefer

Registriert seit: 4. Feb 2003
Ort: Hannover
2.029 Beiträge
 
Delphi XE3 Enterprise
 
#2

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

  Alt 1. Mai 2009, 16:19
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
Martin Schaefer
Phaeno
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.136 Beiträge
 
Delphi 12 Athens
 
#3

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

  Alt 2. Mai 2009, 10:21
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

Zitat von mschaefer:
Du hast damit mal wieder bewiesen, dass Du kein Eichenbrett auslässt..
ich weiß, ich bin böse

nja, da ich den Code ja weitergeben möchte, wollt ich sichergehn, daß da keine all zu gefährlichen Dinge verbaut sind
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von OldGrumpy
OldGrumpy

Registriert seit: 28. Sep 2006
Ort: Sandhausen
941 Beiträge
 
Delphi 2006 Professional
 
#4

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

  Alt 2. Mai 2009, 11:24
Wie sieht das denn speichertechnisch aus, gibts da keine Lecks? Das fällt mir so spontan dazu ein...
"Tja ja, das Ausrufezeichen... Der virtuelle Spoiler des 21. Jahrhunderts, der Breitreifen für die Datenautobahn, die k3wle Sonnenbrille fürs Usenet. " (Henning Richter)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.136 Beiträge
 
Delphi 12 Athens
 
#5

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

  Alt 2. Mai 2009, 11:30
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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.136 Beiträge
 
Delphi 12 Athens
 
#6

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

  Alt 2. Mai 2009, 13:32
OK, ich hatte doch einen Fehler drin ... falls meine Funktion ParseNodePath keinen passenden Node fand, setzte sie Self auf NIL 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
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#7

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

  Alt 2. Mai 2009, 13:58
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..

* HABDAK = "Hacken bis der Arzt kommt"
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.136 Beiträge
 
Delphi 12 Athens
 
#8

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

  Alt 2. Mai 2009, 14:34
http://fnse.de/S01/0MI.gif

Zitat von alzaimar:
Ist aber nicht mehr so richtig OOP, gell?
Ich wüßte jetzt nicht wieso nicht?

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

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
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von igel457
igel457

Registriert seit: 31. Aug 2005
1.622 Beiträge
 
FreePascal / Lazarus
 
#9

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

  Alt 2. Mai 2009, 14:59
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.
Andreas
"Sollen sich auch alle schämen, die gedankenlos sich der Wunder der Wissenschaft und Technik bedienen, und nicht mehr davon geistig erfasst haben als die Kuh von der Botanik der Pflanzen, die sie mit Wohlbehagen frisst." - Albert Einstein
  Mit Zitat antworten Zitat
Benutzerbild von mschaefer
mschaefer

Registriert seit: 4. Feb 2003
Ort: Hannover
2.029 Beiträge
 
Delphi XE3 Enterprise
 
#10

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

  Alt 2. Mai 2009, 15:01
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
Martin Schaefer
Phaeno
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 05:30 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