![]() |
reintroduce;
hi,
ich versuche eine methode aus einer vorgänger klasse neu zu definieren...
Delphi-Quellcode:
original:
procedure DoActivate(Value: Boolean); override;
Delphi-Quellcode:
fehler ist:
meine nachfolgermethode neu definiert:
procedure DoActivate(Value: Boolean; TSSendDataRec: TTSSendDataRec); reintroduce; override; Zitat:
|
Re: reintroduce;
Hi,
vielleicht ist die direktive overload angebrachter. ;) mfG mirage228 |
Re: reintroduce;
hoi mirage,
kann ich dann auch noch "inherited" verwenden um die vorfahrmethode aufzurufen? btw: das verstehe ich nicht, was wäre denn dann zwischen: Zitat:
Zitat:
|
Re: reintroduce;
reintroduce und override zusammen schließen sich aus. Mit reintroduce erstellst du eine neue Methode mit einem bestimmten Namen, auch wenn es bereist eine virtuelle mit diesem gibt. Mit override überschreibst du aber eine virtuelle Methode. Es geht nur das ein oder das andere, aber nicht beides zusammen.
|
Re: reintroduce;
Zitat:
|
Re: reintroduce;
vielen dank, dann versteh ichs :mrgreen:
dann brauch ich reintroduce nichtmal ^^ oder auch nicht :roll: (verdammt aber auch -_-) ich kann bei einer überladenen methode ja garkein inherited aufrufen... ...muss ich aber, gibts da keine möglichkeit? |
Re: reintroduce;
ich hab als beispiel einfach mal die methode CopyToClipboard der TEdit-komponente "neugeschrieben", hab ihr einen parameter mehr verpasst und der compiler meckert nicht. nun ist die frage nur noch, ob du die alte prozedur (nach außen hin, der inherited aufruf ist sowieso möglich) behalten willst, oder ob auch die alte methode weiterhin aufgerufen werden können soll (is das deutsch? :roll:) soll die eigentliche methode nach außen hin nich mehr existieren lässt du sämtliche compiler-direktiven weg, soll die methode weiterhin aufrufbar sein fügst du ein overload hinten an, und fertig is das :zwinker: :mrgreen:
hier ma mein code zum veranschaulichen (und testen)
Delphi-Quellcode:
interface
uses StdCtrls; type TEdit2 = class(TEdit) private protected public procedure CopyToClipboard(TextLength: Integer); overload;// reintroduce; published end; implementation procedure TEdit2.CopyToClipboard(TextLength: Integer); var S: string; begin S := self.Text; self.Text := Copy(self.Text,1,TextLength); inherited CopyToClipboard; self.Text := S; end; end. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:48 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