AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Protected-Methode, welche nicht virtual ist, einer Basis-Klasse überschreiben
Thema durchsuchen
Ansicht
Themen-Optionen

Protected-Methode, welche nicht virtual ist, einer Basis-Klasse überschreiben

Ein Thema von swestner · begonnen am 1. Aug 2024 · letzter Beitrag vom 1. Aug 2024
Antwort Antwort
swestner

Registriert seit: 31. Aug 2012
Ort: Hallstadt
75 Beiträge
 
Delphi 10.4 Sydney
 
#1

Protected-Methode, welche nicht virtual ist, einer Basis-Klasse überschreiben

  Alt 1. Aug 2024, 01:45
Delphi-Version: 12 Athens
Hallo,

in DUnit in der Datei GUITestRunner gibt es eine nicht-virtuelle protected-Methode


function TGUITestRunner.IniFileName: string;
const
TEST_INI_FILE = 'dunit.ini';
begin
result := ExtractFilePath(Application.ExeName) + TEST_INI_FILE
end;

Diese liefert als Pfad zum Speichern der DUnit.ini-Datei immer das Verzeichnis der EXE zurück.

Ich würde hier gerne ein anderes Verzeichnis setzen bzw. auch den Dateinamen ändern.

Dazu müßte ich in meinem Testcase das IniFilename überschreiben.

Das geht aber nicht, da die Methode nicht virtuell ist.

Den Source möchte ich auch nicht kopieren, das schafft wieder Abhängingekeiten usw.

Gibt es eine Möglichkeit, die nicht-virtuelle protected-Methode zu überschreiben / ersetzen?

Ich habe schon ein class-Helper versucht aber das hat nicht funktioniert.

Grüße

Stefan
Stefan Westner
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Protected-Methode, welche nicht virtual ist, einer Basis-Klasse überschreiben

  Alt 1. Aug 2024, 03:16
Die Funktion im Code direkt umschreiben,
also z.B. den Pfad anders festlegen
oder oben in der Klasse eine Vraiable/Property einfügen und unten benutzen
oder oben das fehlende virtual einfügen und ableiten

oder ein Hook. (im Prinzip wird da der Anfang der Methode im Kompilat überschrieben, zur Laufzeit, und dort ein JUMP eingefügt, welcher auf eine andere Methode zeigt)
prozedur hookprozedur hook
Hier im Forum suchenprozedur hook
Bei Google suchendelphi prozedur hook
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu ( 1. Aug 2024 um 03:20 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 02:28 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