![]() |
Prozedur dopelt nutzen
Hi,
ich hoffe, daß das hier jemand versteht. :lol: mit folgender Prozedur drucke ich etwas aus und/oder schreibe es in eine Listbox.
Delphi-Quellcode:
Diese Prozedur ist abgeleitet von einer Methode aus einer anderen Klasse. Diese sieht so aus :
procedure TfrmAusf.druckln (var lbox : TListBox;st : string);
begin if AufDrucker then println (st); if AufBildschirm then lbox.Items.Add (st); end;
Delphi-Quellcode:
In der Ursprungsklasse existiert nun eine weitere Prozedur, die intern druckln aufruft. Meine Frage ist nun, wie ich die Parameter behandeln soll. DIe Ursprungsklasse kann ja nicht wissen, daß später ein zweiter Parameter eingeführt wird.
procedure Tfrm.druckln (st : string);
begin if AufDrucker then println (st); end; Meine Überlegung ist jetz, direkt 2 Parameter zu benutzen, aber wie behandele ich dann eine nicht vorhandene Listbox ? :shock: |
Re: Prozedur dopelt nutzen
Zitat:
Gruß Stephan |
Re: Prozedur dopelt nutzen
Hallo,
die "Nachkommen-Funktion" muß Parameterkompatibel sein. Denn überall wo eine Vorgängerklasse verwendet wird, muß auch eine Nachkommenklasse zumindest syntaktisch Korrekt verwendet werden können. Mach doch einfach eine neue Funktion, die das Zeug für die Listbox macht und für den rest die alte druckln Aufruft. Es ist meist nicht sinnvoll den gleichen Code nochmal in einem Nachkomnmen zu schreiben. |
Re: Prozedur dopelt nutzen
Moin!
Wie schon gesagt: mach es gleich in der Basisklasse:
Delphi-Quellcode:
Der 2. Parameter ist so optional und wenn du ihn angibst, dann z.b. von einer ListBox nur noch das ListBox1.Items angeben, weil durch das TStrings kannst du dort auch einfach z.B. die Lines eines Memos oder sonstiges übergeben und bist nicht mehr so steif auf eine ListBox festgelegt...
procedure Tfrm.druckln (Const st : string; Abox : TStrings = Nil);
begin if AufDrucker then println (st); if AufBildschirm And Assigned(Abox) then Abox.Add (st); end; MfG Muetze1 |
Re: Prozedur dopelt nutzen
Das mit dem NIL, ja da bin ich hängen geblieben :
Delphi-Quellcode:
in diesem Fall also eine Leerzeile, geht nicht !
druckln (nil,'');
|
Re: Prozedur dopelt nutzen
Moin!
Falls das der Aufruf zu meiner Procedure sein soll, dann schau nochmal in die Parameterliste: ich habe die Reihenfolge vertauscht. Erst der String und dann, optional, die ListBox.Items.
Delphi-Quellcode:
MfG
druckln('', Nil);
Muetze1 |
Re: Prozedur dopelt nutzen
Thx, es geht jetzt doch. Die falschen Parameter habe ich schon gesehen. Aber man sollte es vermeiden VAR-Parameter mit NIL zu besetzen. Das kann ja wohl nicht gehen. :mrgreen:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:27 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