AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Mit class helper Methode "überschreiben"

Mit class helper Methode "überschreiben"

Ein Thema von Codehunter · begonnen am 10. Sep 2018 · letzter Beitrag vom 10. Sep 2018
Antwort Antwort
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
1.556 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

Mit class helper Methode "überschreiben"

  Alt 10. Sep 2018, 09:34
Delphi-Version: 10.2 Tokyo
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
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
38.766 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#2

AW: Mit class helper Methode "überschreiben"

  Alt 10. Sep 2018, 09:45
Mit Helpern kann man nichts überdecken. Man kann nur erweitern.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
1.556 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

AW: Mit class helper Methode "überschreiben"

  Alt 10. Sep 2018, 09:48
Hmpf Immer wieder lustig wenn man schlechtes Codedesign erbt und dann schnelle Lösungen gefragt sind.
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
6.915 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#4

AW: Mit class helper Methode "überschreiben"

  Alt 10. Sep 2018, 09:53
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...
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!

Geändert von jaenicke (10. Sep 2018 um 09:56 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

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

AW: Mit class helper Methode "überschreiben"

  Alt 10. Sep 2018, 09:58
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.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight

Geändert von Stevie (10. Sep 2018 um 10:03 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
6.915 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#6

AW: Mit class helper Methode "überschreiben"

  Alt 10. Sep 2018, 10:05
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...
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

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

AW: Mit class helper Methode "überschreiben"

  Alt 10. Sep 2018, 10:08
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.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

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

Registriert seit: 3. Jun 2003
Ort: Thüringen
1.556 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#8

AW: Mit class helper Methode "überschreiben"

  Alt 10. Sep 2018, 11:13
Und dann brüllt auf irgendeiner Maschine in Hintertupfingen der Virenscanner rum. Nöööö dann lieber die Altlasten angehen, auch wenns mehr Stress bedeutet.
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 16:09 Uhr.
Powered by vBulletin® Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2018 by Daniel R. Wolf