![]() |
Delphi-Version: XE2
Methoden-Deklaration vorgeben?
Ein weiterer absolut nichtssagender Titel. Bessere Vorschläge erbeten. Tags habe ich auch keine...
Nehmen wir an, ich bin im Begriff einen Batzen an Prozeduren zu deklarieren welche alle die gleiche Parameterliste haben. Anstatt nun jedes mal hinzugehen und zu sagen
Delphi-Quellcode:
Kann ich nicht einmal einen Typ deklarieren und dann immer sagen
type TMeineKlasse = class
procedure proc1(input1: Integer; input2: TSomeClass; out output: Double); procedure proc2(input1: Integer; input2: TSomeClass; out output: Double); [...]
Delphi-Quellcode:
Da ich so etwas bislang noch nicht gesehen habe ist die Hoffnung jetzt schon im Keller :(
type TMeineKlasse = class
type TProcType = procedure(input1: Integer; input2: TSomeClass; out output: Double) of object; procedure proc1 = TProcType; procedure proc2 = TProcType; [...] |
AW: Methoden-Deklaration vorgeben?
Dann schau dir mal die VCL Sourcen an :zwinker:
|
AW: Methoden-Deklaration vorgeben?
Ja die Eventhandler wie
Delphi-Quellcode:
sind mir auch als erstes eingefallen - Und gerade dort sehe ich so etwas nicht: Einmal gibt der TNotifyEvent-Typ die Parameterliste vor, dann beinhaltet die Deklaration jeder "onClick"-Methode wieder (redundant?) die Parameterliste in Form von "Sender: TObject".
TNotifyEvent
|
AW: Methoden-Deklaration vorgeben?
Zitat:
Nein, geht nicht. |
AW: Methoden-Deklaration vorgeben?
wat :|
|
AW: Methoden-Deklaration vorgeben?
Ich frage mich eher, ob es nicht eine bessere Lösung gibt. Das hört sich für mich eher wie eine Frage nach der Umsetzung einer ungünstigen Lösung des Problems an als nach einer Frage nach dem Problem selbst...
|
AW: Methoden-Deklaration vorgeben?
Nichts großartiges - Es ging um das Empfangen von Netzwerkpaketen und Erstellen einer Antwort. Je nachdem was für eine Information im ankommenden Paket enthalten ist, werden vollkommen unterschiedliche Dinge getan.
Delphi-Quellcode:
Die Methoden wie
if ankommendesPaket.commandStr = 'zooBesuch' then
TPaketbehandler.zooBesuchProc(ankommendesPaket, ausgehendesPaket, weitereParams) else if ankommendesPaket.commandStr = 'zirkusBesuch' then TPaketbehandler.zirkusBesuchProc(ankommendesPaket, ausgehendesPaket, weitereParams) ;
Delphi-Quellcode:
schauen sich das Paket an, tuen entsprechende Dinge und generieren eine Antwort. Mehr steckt nicht dahinter.
zooBesuchProc
Abgesehen davon welches halbe Dutzend etablierte Patterns ich hier hätte unterbringen können, rein syntaktisch wollte mir nur sparen, für alle Methoden ständig die gleichen Parameterlisten in der Deklaration runterzutippen sondern es einmal an einem Platz haben... |
AW: Methoden-Deklaration vorgeben?
Zitat:
Delphi-Quellcode:
Danach mußt du nur noch die Proceduren-Bezeichner der Kopien ändern:
private
procedure proc1(input1: Integer; input2: TSomeClass; out output: Double); procedure proc1(input1: Integer; input2: TSomeClass; out output: Double); procedure proc1(input1: Integer; input2: TSomeClass; out output: Double); procedure proc1(input1: Integer; input2: TSomeClass; out output: Double); procedure proc1(input1: Integer; input2: TSomeClass; out output: Double); procedure proc1(input1: Integer; input2: TSomeClass; out output: Double); procedure proc1(input1: Integer; input2: TSomeClass; out output: Double);
Delphi-Quellcode:
Am Schluß erzeugst du die Methoden mit Strg+Shift+C:
private
procedure proc1(input1: Integer; input2: TSomeClass; out output: Double); procedure proc2(input1: Integer; input2: TSomeClass; out output: Double); procedure proc3(input1: Integer; input2: TSomeClass; out output: Double); procedure proc4(input1: Integer; input2: TSomeClass; out output: Double); procedure proc5(input1: Integer; input2: TSomeClass; out output: Double); procedure proc6(input1: Integer; input2: TSomeClass; out output: Double); procedure proc7(input1: Integer; input2: TSomeClass; out output: Double);
Delphi-Quellcode:
Dauer der Aktion bei 7 Proceduren: Unter einer Minute!
procedure TForm1.proc1(input1: Integer; input2: TSomeClass; out output: Double);
begin end; procedure TForm1.proc2(input1: Integer; input2: TSomeClass; out output: Double); begin end; procedure TForm1.proc3(input1: Integer; input2: TSomeClass; out output: Double); begin end; procedure TForm1.proc4(input1: Integer; input2: TSomeClass; out output: Double); begin end; procedure TForm1.proc5(input1: Integer; input2: TSomeClass; out output: Double); begin end; procedure TForm1.proc6(input1: Integer; input2: TSomeClass; out output: Double); begin end; procedure TForm1.proc7(input1: Integer; input2: TSomeClass; out output: Double); begin end; |
AW: Methoden-Deklaration vorgeben?
Zitat:
|
AW: Methoden-Deklaration vorgeben?
Richtig. So wie manche Bodybuilder auf Veranstaltungen gehen und ihren Körper bewundern lassen, führe ich oft vor, in welcher Geschwindigkeit meine Finger über die Tastatur huschen und mit welchen raffinierten RAD Studio-Tricks ich die wunderbarsten Dinge ermögliche. Ersteres könnte ich natürlich auch, aber da spielt Delphi nur noch eine untergeordnete Rolle.
Tipp des Tages: Die Code-Completion geht sogar rückwärts: Funktion direkt implementieren und der Editor ergänzt die Deklaration in der Klasse. Zitat:
Ich hätte die Parameterliste gerne nicht ein Dutzend mal redundant im Quelltext. Hat so etwas eigentlich einen hippen Fachbegriff? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:19 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 by Thomas Breitkreuz