![]() |
Projektweit prüfen, ob Methode als virtuell (override) im protected steht
Guten Morgen zusammen,
Vorbemerkung ich entwickle seit längerem an einem Projekt in Delphi7 (mit Anbindung an DB Firebird). Dieses Projekt wird seit 2014 produktiv eingesetzt. Natürlich haben sich über die Jahre sehr viele Weiterentwicklungen ergeben. Und nicht immer wurde der Code einwandfrei gepflegt (mea culpa). Mir ist klar, dass hier irgendwann eine große Aufräum- und Aktualisierungsaktion nötig ist. Sobald ich die Ressourcen dafür habe .. also irgendwann .. :oops: Zustand: ich verwende selbstverständlich abgeleitete Formulare. Nun hat es sich ergeben, dass im Elternformular einige Methoden von
Delphi-Quellcode:
auf
private
Delphi-Quellcode:
geändert wurde.
protected
Und zusätzlich (unsauber .. siehe oben .. ich weiß) wurden im Entwicklungsprozess diese Methoden in den abgeleiteten Formularen neu als Klassenmethoden oder private eingebaut. Frage: ich möchte nun diese Fehler/Unsauberkeiten beseitigen. Dazu muss ich herausfinden, wo diese Fehler/Unsauberkeiten gegeben sind. Wie finde ich die entsprechenden Stellen im Code? Das geht sicher manuell .. ist aber aufgrund der Projektgröße zeitaufwändig und evt. auch fehleranfällig. Ich könnte die Compilermeldungen "..verbirgt die " verwenden. Das mach ich auch wenn ich sie bekomme, aber irgendwie scheint Delphi das nicht immer anzuzeigen. Ich suche also nach so etwas (grobe Funktionsbeschreibung): Suche in jedem Formular nach Methode xy. Dann prüfe, ob das ein abgeleitetes Formular ist. Wenn es abgeleitet ist und die Methode xy im Elternformular existiert, dann prüfe, ob die Methode im abeleiten Formular im
Delphi-Quellcode:
(oder
protected
Delphi-Quellcode:
) steht und ob IN der Methode ein
public
Delphi-Quellcode:
programmiert ist.
iherited
Danke für Tips hierzu! |
AW: Projektweit prüfen, ob Methode als virtuell (override) im protected steht
Ich glaube für einen von uns ist es noch zu früh am Morgen.
Wenn es private ist, dann ist es private. Du kannst das aus einer Unterklasse nicht mehr direkt aufrufen, auch nicht durch ein
Delphi-Quellcode:
.
inherited
Beispiel:
Delphi-Quellcode:
Das siehst du auch daran dass weder die Methode
type
TBase = class strict private procedure privateStuff(); end; TSub = class(TBase) strict private procedure privateStuff(); public procedure publicSubStuff(); end; { TSub } procedure TSub.privateStuff(); begin inherited; // Tut nichts WriteLn('TSub.privateStuff()'); end; procedure TSub.publicSubStuff(); begin privateStuff(); WriteLn('TSub.publicStuff()'); end; { TBase } procedure TBase.privateStuff(); begin WriteLn('TBase.privateStuff'); end; begin TSub.Create().publicSubStuff(); readln; end.
Delphi-Quellcode:
noch die Zeile
TBase.privateStuff()
Code:
im Debugger einen Haltepunkt bekommen.
inherited; // Tut nichts
|
AW: Projektweit prüfen, ob Methode als virtuell (override) im protected steht
oh wie war .. sicher zu früh.
Also - neuer Versuch -: im Elternformular von
Delphi-Quellcode:
auf
private
Delphi-Quellcode:
geändert,
protected
im Kindformular als Klassenmethode oder
Delphi-Quellcode:
eingetragen - das ist falsch.
private
Genau das will ich ändern. Im Kindformular soll die Methode dann eben auch
Delphi-Quellcode:
sein, mit
protected
Delphi-Quellcode:
gekennzeichnet und im Code das inherited stehen.
override
|
AW: Projektweit prüfen, ob Methode als virtuell (override) im protected steht
Alles klar, jetzt habe ich es verstanden.
Zitat:
Delphi-Quellcode:
type
TBase = class protected procedure stuff(); virtual; end; TSub = class(TBase) private procedure stuff(); end; Zitat:
|
AW: Projektweit prüfen, ob Methode als virtuell (override) im protected steht
Schätze, ich würde erstmal mit Menü=>Suchen=>In Dateien suchen=>alle Dateien des Projekts alle Vorkommen finden lassen und mir merken, wo die stehen.
Danach in den Elternklassen die Methoden umbenamsen, kompilieren und beobachten, wo es dann kracht bzw wo es nicht kracht, aber sollte... |
AW: Projektweit prüfen, ob Methode als virtuell (override) im protected steht
@ConnorMcLeod
klar - der manuelle Ansatz ist möglich. Ich hatte die Hoffnung, hier zumindest einen Teil automatisieren zu können. @Der schöne Günther das zusätzliche
Delphi-Quellcode:
werde ich ausprobieren. Wie gesagt bekomme ich irgendwie nicht alle Compilermeldungen angezeigt bzw. habe ich nicht genau verstanden, was für die Anzeige nötig ist (Kompilerschalter sind gesetzt).
virtual
|
AW: Projektweit prüfen, ob Methode als virtuell (override) im protected steht
Zitat:
Aber wie gesagt nur so lange wie du an der Unit etwas änderst. Kompilierst du zwei Mal ohne etwas zu ändern, dann erscheinen die Meldungen nicht mehr. Das ist zumindest meine Erfahrung. |
AW: Projektweit prüfen, ob Methode als virtuell (override) im protected steht
@Aviator
das hatte ich auch schon mal vermutet. Lösche ich alle DCU Dateien und kompiliere neu, kommen immer noch keine Fehlermeldungen. @Der schöne Günther das ![]() |
AW: Projektweit prüfen, ob Methode als virtuell (override) im protected steht
Liste der Anhänge anzeigen (Anzahl: 2)
Zitat:
|
AW: Projektweit prüfen, ob Methode als virtuell (override) im protected steht
ja - bei D7 geht das über "Projekt|xy.exe erzeugen" oder Umsch-F9.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:07 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