Hallo,
ich habe ein kleines bis mittelgroßes Problem in Sachen Überschreiben von Prozeduren.
Ich habe eine Klasse (TUrKlasse) mit der Prozedur "machwas".
Jetzt habe ich eine andere Klasse (TNeueKlasse), die von TUrKlasse abgeleitet wird:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| type TUrKlasse = class procedure irgendwas; procedure machwas(Param: String); end;
TNeueKlasse = class(TUrKlasse) procedure machwas(Param: String); end; |
Wenn ich TNeueKlasse.machwas('x') aufrufe, wird sicherlich die neu deklarierte Prozedur aufgerufen - nur ist es in meinem Fall so, dass die Prozedur machwas von einer anderen Prozedur aus der Klasse TUrKlasse aufgerufen wird:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| procedure TUrKlasse.irgendwas; begin machwas('x'); end;
procedure TUrKlasse.machwas(Param: String); begin Showmessage('original'); end;
procedure TNeueKlasse.machwas(Param: String); begin Showmessage('neue Klasse'); end; |
Wenn die Proz. irgendwas nun "machwas" aufruft soll aber der neue Quellcode und nicht der alte ausgeführt werden...
ich hab schon versucht, "machwas" als
virtual zu deklarieren und sie dann mit
override zu überschreiben - hat nix gebracht. Es wurde immer der "alte" Quelltext ausgeführt.
Ich hoffe, es ist überhaupt möglich, was ich vor hab - und der ein oder andere weiß, wie's geht.
Also danke schon mal im Voraus.
Astra