AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Prozedur dopelt nutzen

Ein Thema von Hansa · begonnen am 5. Okt 2004 · letzter Beitrag vom 5. Okt 2004
Antwort Antwort
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#1

Prozedur dopelt nutzen

  Alt 5. Okt 2004, 11:00
Hi,

ich hoffe, daß das hier jemand versteht.

mit folgender Prozedur drucke ich etwas aus und/oder schreibe es in eine Listbox.

Delphi-Quellcode:
procedure TfrmAusf.druckln (var lbox : TListBox;st : string);
begin
  if AufDrucker then
    println (st);
  if AufBildschirm then
    lbox.Items.Add (st);
end;
Diese Prozedur ist abgeleitet von einer Methode aus einer anderen Klasse. Diese sieht so aus :

Delphi-Quellcode:
procedure Tfrm.druckln (st : string);
begin
  if AufDrucker then
    println (st);
end;
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.

Meine Überlegung ist jetz, direkt 2 Parameter zu benutzen, aber wie behandele ich dann eine nicht vorhandene Listbox ?
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von Steve
Steve

Registriert seit: 2. Mär 2004
Ort: Würzburg
730 Beiträge
 
Delphi 2006 Personal
 
#2

Re: Prozedur dopelt nutzen

  Alt 5. Okt 2004, 11:03
Zitat von Hansa:
Meine Überlegung ist jetz, direkt 2 Parameter zu benutzen, aber wie behandele ich dann eine nicht vorhandene Listbox ?
Ich würd im einfachsten Fall auf lbox=NIL prüfen..

Gruß
Stephan
Stephan B.
Wer andern eine Grube gräbt ist Bauarbeiter!
Wer im Glashaus sitzt, sollte sich lieber im Dunkeln ausziehen!
Außerdem dieser Satz kein Verb...
  Mit Zitat antworten Zitat
Benutzerbild von fiasko
fiasko

Registriert seit: 10. Dez 2002
Ort: Dresden
506 Beiträge
 
#3

Re: Prozedur dopelt nutzen

  Alt 5. Okt 2004, 11:05
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.
Thomas Liske
Posts comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#4

Re: Prozedur dopelt nutzen

  Alt 5. Okt 2004, 11:20
Moin!

Wie schon gesagt: mach es gleich in der Basisklasse:

Delphi-Quellcode:
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;
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...

MfG
Muetze1
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#5

Re: Prozedur dopelt nutzen

  Alt 5. Okt 2004, 11:31
Das mit dem NIL, ja da bin ich hängen geblieben :

druckln (nil,''); in diesem Fall also eine Leerzeile, geht nicht !
Gruß
Hansa
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#6

Re: Prozedur dopelt nutzen

  Alt 5. Okt 2004, 12:01
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.

druckln('', Nil); MfG
Muetze1
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#7

Re: Prozedur dopelt nutzen

  Alt 5. Okt 2004, 13:38
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.
Gruß
Hansa
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:21 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz