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 Objekt funktion override (https://www.delphipraxis.net/143875-objekt-funktion-override.html)

Gruber_Hans_12345 25. Nov 2009 10:10


Objekt funktion override
 
Ich möchte gerne ZUR LAUFZEIT bei einem besteheneden Objekt eine funktion "override"

Vereifacht gesagt:

Delphi-Quellcode:
type
 TMyList = class(TList)
 private
   procedure MyClear;
 end;

procedure TMyList.MyClear;
begin
  //
end;
nun brauche ich eine Funktion, die es schaft irgendwie die MyClear als neue Clear funktion zu definiern.

Das ganze wird dann später zur Laufzeit aus einer art Interpreter generiert werden ...
Deshalb suche ich nun infos zu sowas ....

bin für alles dankbar

mkinzler 25. Nov 2009 10:12

Re: Objekt funktion override
 
Ich versthe deine Frage nicht. Könntest du dein Anliegen genauer beschreiben?

Gruber_Hans_12345 25. Nov 2009 10:18

Re: Objekt funktion override
 
Ok, ich versuche es

Ich muß zur Laufzeit eine "normale" TList erzeugen.
und für dieses eine Objekt muß ich es schaffen, das ich eine Methode, sagen wir die Clear methode überschreiben kann.
Das verhalten sollte so sein, wie wenn ich ein neuen Typ deklarieren würde.

mkinzler 25. Nov 2009 10:26

Re: Objekt funktion override
 
Das wird schwer mann könnte aber den Originaltyp mit dem abgeleiteten Typ überlagern.

himitsu 25. Nov 2009 10:28

Re: Objekt funktion override
 
Definier MyClear als VIRTUAL

und die Virtual-Method-List könnte man auch zur Laufzeit bearbeiten.


Auch wenn ich jetzt nicht verstehe, warum du das so machen willst ... könnte mir vorstellen, dß es einen anderen/besseren Weg gäbe, wenn wir wüssten, was damit erricht werden soll.

Gruber_Hans_12345 25. Nov 2009 10:31

Re: Objekt funktion override
 
Hmmm.... Ich müsste irgendwie wissen, wie Delphi intern das mit dem override macht, gibt es dafür irgendwelche Sprungtabellen, die man da bearbeiten kann?

Das Problem ist, ich weiss erst zur laufzeit, das die funktion clear "override"n werden möchte.

guinnes 25. Nov 2009 11:07

Re: Objekt funktion override
 
Zitat:

Zitat von Gruber_Hans_12345
Hmmm.... Ich müsste irgendwie wissen, wie Delphi intern das mit dem override macht, gibt es dafür irgendwelche Sprungtabellen, die man da bearbeiten kann?

Es gibt für jede Klasse eine Virtuelle Methoden Tabelle, darin stehen ( u.a. ) die Adressen der für diese Klasse gültigen Virtuellen Methoden. Da die Tabelle im Code-Segment steht, bezweifele ich, dass die beschreibbar ist

mkinzler 25. Nov 2009 11:10

Re: Objekt funktion override
 
Mir scheint diese Vorgehensweise auch nicht unbedingt optimal zu sein

DeddyH 25. Nov 2009 11:10

Re: Objekt funktion override
 
Und wenn man Clear auf jeden Fall überschreibt und bei Nichtbedarf einfach inherited Clear aufruft?

mkinzler 25. Nov 2009 11:15

Re: Objekt funktion override
 
An sowas hatt ich auch gedacht. Könnte man auch mit der Überlagerung kombinieren um diese Änderungen auf TList anzuwenden


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:19 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