![]() |
Delphi-Version: 12 Athens
Protected-Methode, welche nicht virtual ist, einer Basis-Klasse überschreiben
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 |
AW: Protected-Methode, welche nicht virtual ist, einer Basis-Klasse überschreiben
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) ![]() ![]() ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:42 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