AGB  ·  Datenschutz  ·  Impressum  







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

dynamische Methode umbenennen

Ein Thema von himitsu · begonnen am 5. Nov 2011 · letzter Beitrag vom 6. Nov 2011
Antwort Antwort
Benutzerbild von himitsu
himitsu

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

dynamische Methode umbenennen

  Alt 5. Nov 2011, 15:36
Moin,

bei Interfaces kann man doch sowas machen.
Delphi-Quellcode:
IMeinInterface = Interface
  function VorfahrFunktion: Integer;
end;

TMeinObjekt = class(TVorfahr, IMeinInterface)
  function IInterface.VorfahrFunktion = MeineFunktion
  function MeineMeine: Integer;
end;
Aber für Objekte gibt es diese Möglichkeit doch bestimmt nicht?
Also, wo man eine virtuelle Funktion überschreiben kann, aber unter anderem Namen ... quasi daß man da die Adresse der VMT mit in der Deklaration angibt oder so.


Einen Umweg, über eine Zwischenklasse hätte ich ja, aber wenn es einen direkten Weg gäbe ... vielleicht gibt's ja einen, also ohne die RTTI nachträglich umzubiegen und die VMT zu ändern oder eben ohne eine zustäzliche Klasse.
$2B or not $2B

Geändert von himitsu ( 5. Nov 2011 um 15:43 Uhr)
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#2

AW: dynamische Methode umbenennen

  Alt 5. Nov 2011, 15:40
Was hätte das für einen Sinn? Oder geht es dir nur um das wie?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: dynamische Methode umbenennen

  Alt 5. Nov 2011, 15:51
Es geht darum, sicherzustellen, daß eine gewisse Reihenfolge in den Methodenaufrufen eintritt, egal wer wie dann nachher diese Methode überschreibt.

Also eine "kurze" Unterbrecheung in der Vererbungslinie.
Es geht auf soetwas Ähnliches hinaus, wie ein Singletonpattern.

Das Ergebnis wird demnächst hier vorgestellt.
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.027 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#4

AW: dynamische Methode umbenennen

  Alt 5. Nov 2011, 18:00
Für Interfaces gibts das, um Namenskollisionen beim Implementieren mehrerer Interfaces behandeln zu können. Da Delphi aber keine Mehrfachvererbung hat, braucht man das auch nicht.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: dynamische Methode umbenennen

  Alt 5. Nov 2011, 19:05
Da Delphi aber keine Mehrfachvererbung hat, braucht man das auch nicht.
Schade eigentlich?

Aber OK, wenn man sich den Aufbau und die Methode der Vererbung ansieht, ist es klar, warum es das so nicht geben kann.


Nja, wäre halt zu schön gewesen, aber war mir fast schon klar
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#6

AW: dynamische Methode umbenennen

  Alt 6. Nov 2011, 00:39
Es wird dir zwar nicht helfen, aber sowas geht nur mit message-Methoden. Die werden lediglich über die Message-ID bestimmt - der Name ist dabei egal.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: dynamische Methode umbenennen

  Alt 6. Nov 2011, 09:31
Nja, beide Methoden werden erstmal grundsätzlich gleich behandelt.

Message-Methoden bekommen einen positiven Index (in der RTTI)
und virtuelle Methoden einen negativen Index + einen Eintrag in der VMT (virtual method table), an der Stelle des genannten Indize.

So:
http://www.delphipraxis.net/164278-i...n-mischen.html
Würde man Methoden umbenannt überschreiben können und und würde mn über die (direkte) weitere Verwendung der Referenz (ob als Objekt oder Interface) informiert werden, wäre des Deklarationen einfacher und der Code, sowie die Deklarationen bestimmt nur noch halb so groß. *heul*



Bei meinem Code, wo dieses eingesetzt werden soll, geht es darum, daß ich freme Interfaces in Objekten kapsle und eigene Objekte, als Interface, an jemand Anderes übergebe,
auf meiner Seite aber alles vorwiegend nur als Objekte verwenden möchte, ohne jetzt alles doppelt erstellen/verwalten zu müssen.

Im Prinzip müßte ich die für eigenen Objekte auch teilweise ein Interface erstellen, dazu dann immer die interne Klasse und dann nochmals eine Klasee für meine objektweise Verwaltung/Kapselung.
So brauche ich aber nur die eine Klasse.
Und das werden leider eine ganze Menge werden.
$2B or not $2B

Geändert von himitsu ( 6. Nov 2011 um 09:41 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


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 08:50 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