![]() |
Objekt funktion override
Ich möchte gerne ZUR LAUFZEIT bei einem besteheneden Objekt eine funktion "override"
Vereifacht gesagt:
Delphi-Quellcode:
nun brauche ich eine Funktion, die es schaft irgendwie die MyClear als neue Clear funktion zu definiern.
type
TMyList = class(TList) private procedure MyClear; end; procedure TMyList.MyClear; begin // end; 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 |
Re: Objekt funktion override
Ich versthe deine Frage nicht. Könntest du dein Anliegen genauer beschreiben?
|
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. |
Re: Objekt funktion override
Das wird schwer mann könnte aber den Originaltyp mit dem abgeleiteten Typ überlagern.
|
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. |
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. |
Re: Objekt funktion override
Zitat:
|
Re: Objekt funktion override
Mir scheint diese Vorgehensweise auch nicht unbedingt optimal zu sein
|
Re: Objekt funktion override
Und wenn man Clear auf jeden Fall überschreibt und bei Nichtbedarf einfach inherited Clear aufruft?
|
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 21:55 Uhr. |
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