Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Mit class helper Methode "überschreiben" (https://www.delphipraxis.net/197835-mit-class-helper-methode-ueberschreiben.html)

Codehunter 10. Sep 2018 09:34

Delphi-Version: 10.2 Tokyo

Mit class helper Methode "überschreiben"
 
Moin!

Es ist ja möglich, im class helper eine gleichnamige Methode zu definieren wie in der "geholfenen" Klasse. Nur kann man dann innerhalb der Implementierung im helper auch auf die gleichnamige Methode der "geholfenen" Klasse zugreifen?

Mir wäre es 100x lieber, ich könnte einfach eine abgeleitete Klasse bauen, aber das geht in dem Fall nicht.

Grüße
Cody

mkinzler 10. Sep 2018 09:45

AW: Mit class helper Methode "überschreiben"
 
Mit Helpern kann man nichts überdecken. Man kann nur erweitern.

Codehunter 10. Sep 2018 09:48

AW: Mit class helper Methode "überschreiben"
 
Hmpf :evil: Immer wieder lustig wenn man schlechtes Codedesign erbt und dann schnelle Lösungen gefragt sind.

jaenicke 10. Sep 2018 09:53

AW: Mit class helper Methode "überschreiben"
 
Im Notfall könntest du die Methode ja auch umbiegen, wenn es wirklich nicht anders geht... sprich am Anfang der Methode per Assembler einen Sprungbefehl einfügen. Schön ist das zwar nicht, aber es klingt auch nicht so als ob das für die schnelle Lösung wichtig wäre...

// EDIT:
Wenn ich sowas machen muss, mache ich darauf ein IFDEF auf die Compilerversion, so dass es bei einer anderen einen Fehler gibt, aber nichts falsch läuft, wenn vergessen wird das noch sauber zu korrigieren... sollte natürlich nicht passieren, aber...

Stevie 10. Sep 2018 09:58

AW: Mit class helper Methode "überschreiben"
 
Ja, man kann eine Methode überdecken, muss aber dann daran denken, an allen Stellen, die Helper unit einzubinden, um dann auch dessen Methode aufzurufen.
Und man kann im Helper auch die ursprüngliche Methode aufrufen, bei einem class helper geht das einfach mit inherited, bei einem Record muss man etwas tricksen.

jaenicke 10. Sep 2018 10:05

AW: Mit class helper Methode "überschreiben"
 
Zitat:

Zitat von Stevie (Beitrag 1412822)
Ja, man kann eine Methode überdecken, muss aber dann daran denken, an allen Stellen, die Helper unit einzubinden, um dann auch dessen Methode aufzurufen.

Deshalb würde ich diese Lösung als noch schlechter als das Umbiegen der Methode ansehen, denn dort kann es durch Entfernen / Vergessen der Helper-Unit Probleme geben, die man dann sehr schwer findet. Denn es kompiliert ja noch alles normal...

Stevie 10. Sep 2018 10:08

AW: Mit class helper Methode "überschreiben"
 
Zitat:

Zitat von jaenicke (Beitrag 1412823)
Zitat:

Zitat von Stevie (Beitrag 1412822)
Ja, man kann eine Methode überdecken, muss aber dann daran denken, an allen Stellen, die Helper unit einzubinden, um dann auch dessen Methode aufzurufen.

Deshalb würde ich diese Lösung als noch schlechter als das Umbiegen der Methode ansehen, denn dort kann es durch Entfernen / Vergessen der Helper-Unit Probleme geben, die man dann sehr schwer findet. Denn es kompiliert ja noch alles normal...

Runtime patching ja, aber nur auf Windows ohne weiteres möglich.

Codehunter 10. Sep 2018 11:13

AW: Mit class helper Methode "überschreiben"
 
Und dann brüllt auf irgendeiner Maschine in Hintertupfingen der Virenscanner rum. Nöööö dann lieber die Altlasten angehen, auch wenns mehr Stress bedeutet.


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