![]() |
Var ohne Variable bzw. mit Variablen-Dummy
Hallo,
ich bin mir nicht sicher, ob mein Titel erklärt, was mein Problem ist und ob ich überhaupt in der richtigen Rubrik schreibe. Ich bin aber auch ideenlos, wie man das besser umschreiben könnte. In einer VCL-Anwendung existiert eine Procedure für das Ereignis
Delphi-Quellcode:
für ein TEdit-Feld. Es ist ein Setup-Fenster und es wid geprüft, ob der Benutzer Änderungen gemacht hat. Diese Procedure wird - weil gleicher Code - von weiteren TEdits aufgerufen. Ich stehe jetzt vor dem Problem, dass ich die Procedure auch von Ereignissen anderen Componenten (TUpDown) aus aufrufen möchte. Dabei stellt sich aber "das Problem", dass OnKeyPress so gestaltet ist, dass eine Rückgabe über
OnKeyPress
Delphi-Quellcode:
erfolgt.
Var Key:Char;
Ich kann jetzt natürlich in jeder der aufrufenden Prozeduren eine sinnlose Variable definieren, mitgeben und das Ergebnis nicht beachten. Ich meine aber, mich zu erinnern, dass man das auch eleganter lösen konnte. Leider weiß ich nicht wie und ich weiß auch nicht, nach welchen Stichworten ich suchen muss. Um mein Problem noch anschaulicher zu machen, hier mal quick and dirty folgenden kurzen Code:
Delphi-Quellcode:
Geht das überhaupt? Falls ja, wie?
Procedure TForm1UpDown1Changing(Sender: TObject);
Var Ch : Char; Begin HandleKeyPress(nil, Ch); End; // Das möchte ich gern verkürzen in so etwas wie Procedure TForm1.UpDown1Changing(Sender: TObject); Begin HandleKeyPress(nil, ...); End; Gruß, Alex |
AW: Var ohne Variable bzw. mit Variablen-Dummy
Hallo,
wie ist
Delphi-Quellcode:
definiert?
HandleKeyPress
Ich vermute mal so:
Delphi-Quellcode:
.
procedure HandleKeyPress(Sender: TObject; c: Char);
du kannst in der Definition ein "Default" definieren
Delphi-Quellcode:
.
procedure HandleKeyPress(Sender: TObject; c: Char = '.');
Dadurch reicht beim Aufruf (wenn man c nicht braucht):
Delphi-Quellcode:
.
HandleKeyPress(nil);
|
AW: Var ohne Variable bzw. mit Variablen-Dummy
Zitat:
Delphi-Quellcode:
Die bisherige Methode HandleKeyPress() wird "entkernt" und ruft natürlich auch DataChanged() auf.
Procedure TForm1.UpDown1Changing(Sender: TObject);
Begin DataChanged; End; Eigentlich ganz einfach. |
AW: Var ohne Variable bzw. mit Variablen-Dummy
Danke für die Vorschläge.
Zitat:
Es ist so definiert
Delphi-Quellcode:
Procedure AccountChange(Sender: TObject; Var Key: Char);
Zitat:
Wenn ich im Interface-Teil die Definition per Hand so ändere
Delphi-Quellcode:
, kommt beim Compilieren die Fehlermeldung "E2239: Der Vorgabeparameter 'key' muss als Wert oder Konstante übergeben werden.".
Procedure AccountChange(Sender: TObject; Var Key: Char = '.');
Die Möglichkeit, Code durch z.B.
Delphi-Quellcode:
erheblich zu verkürzen, ist mir bekannt. Das klappt aber nach meiner Kenntnis eben nur bei Konstanten und nicht bei Variablen. Ich habe das vorübergehend so "gelöst", dass ich eine globale Variable definiert habe und die dann immer als "Opfergabe" mitschicke.
Const Variable: Boolean = True
Immerhin spare ich so mehr als 20 Zeilen Code. Das ist auf den ersten Blick nicht viel. Aber mir geht es insoweit auch um die grundsätzliche Frage, ob so etwas möglich ist. Die Möglichkeit das Auszulagern besteht auch, macht es aber wieder unübersichtlicher. Gruß, Alex |
AW: Var ohne Variable bzw. mit Variablen-Dummy
Zitat:
Das Auslagern der Aktion in eine separate Methode (deren Name das angibt, was sie macht) ist genau der richtige Weg den Code lesbarer und wartbarer zu machen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:51 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