![]() |
Methode überschreiben + zusätzlicher parameter
moin,
wie kann ich denn eine methode einer klasse überschreiben und einen zusätzlichen parameter noch mitgeben? wenn die methode der vorgänger klasse sagen wir mal so aussieht:
Delphi-Quellcode:
und dann möchte ich in der nachfolgerklasse folgendes machen:
procedure SendData(param1: Typ1); virtual;
Delphi-Quellcode:
procedure SendData(param1: Typ1, param2: typ2); override;
... procedure TMyClass.SendData(param1: Typ1, param2: typ2); begin inherited; // und halt weiteres tun... end; ist das möglich? muss ja irgendwie, ich möchte nämlich ein record übergeben |
Re: Methode überschreiben + zusätzlicher parameter
Hallo Pseudemys Nelsoni,
was genau klappt an Deinem Beipiel nicht, wo hakt's denn? :gruebel: |
Re: Methode überschreiben + zusätzlicher parameter
wenn du beide haben willst, dann pack ein overload dahinter (sollte auch im nachhinein noch klappen). brauchst du das ursprüngliche nicht mehr, könnte es mit reintroduce klappen, wobei ich nicht weiß, wie der zu einer änderung der parameterzahl steht.
|
Re: Methode überschreiben + zusätzlicher parameter
Moin,
Zitat:
Zitat:
Delphi-Quellcode:
wenn ich nun aber überschreiben will und einfach einen paremeter hinzufüge:
procedure DoActivate(Value: Boolean); override;
Delphi-Quellcode:
kommt:
procedure DoActivate(Value: Boolean; TSSendDataRec: TTSSendDataRec); override;
Zitat:
was kann ich denn noch versuchen? |
Re: Methode überschreiben + zusätzlicher parameter
Überschriebene Methoden müssen die gleichen Parameter haben. Da wirste so wenig machen können. Ich würd an deiner Stelle mein Konzept überdenken. Was genau hast du vor?
|
Re: Methode überschreiben + zusätzlicher parameter
ich habe eine Klasse von TClientSocket abgeleitet, wenn also eine verbindung besteht(doactivate) möchte ich von der klasse heraus schon daten an den server senden...nur weiss ich nicht wie... das überschreiben von DoActivate(+parameter, was wohl nicht geht) macht mir genau solche probleme wie beim versuch ein ereignis (geht das überhaupt?)wie "OnConnect" zu überschreiben... :?
Edit: Hab statt 2ten parameter der funktion lieber n neues feld genommen. mal sehn obs so alles geht |
Re: Methode überschreiben + zusätzlicher parameter
Zitat:
Delphi-Quellcode:
Gruß,
type
TVorfahr = class(TObject) public procedure SendData(param1: Typ1; param2: Typ2); virtual; end; TNachfahr = class(TVorfahr) public procedure SendData(param1: Typ1; param2: Typ2; param3: Typ3); reintroduce; overload; end; procedure TVorfahr.SendData(param1: Typ1; param2: Typ2); begin ... end; procedure TNachfahr.SendData(param1: Typ1; param2: Typ2; param3: Typ3); begin inherited SendData(param1,param2); ... end; Marcel |
Re: Methode überschreiben + zusätzlicher parameter
ahhh, vielen dank :)
noch eine frage dazu: Zitat:
|
Re: Methode überschreiben + zusätzlicher parameter
Zitat:
Nein, wieso denn? inherited hast immer mit der Vorfahrklasse zu tun. Du greifst ja vom Nachfahren auf den Vorfahren zu und nicht umgekehrt. |
Re: Methode überschreiben + zusätzlicher parameter
achsoooo, schon klar, hab garnicht gelesen das das der vorfahr ist. hab mich auch schon gewundert wieso der nachfahre 2mal die gleiche prozedur (mit unterschiedlichen parametern) hat. :oops:
danke =) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:37 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