AGB  ·  Datenschutz  ·  Impressum  







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

Procedure mit vielen Parametern ...

Ein Thema von moelski · begonnen am 20. Sep 2006 · letzter Beitrag vom 20. Sep 2006
Antwort Antwort
Seite 1 von 2  1 2      
moelski

Registriert seit: 31. Jul 2004
1.110 Beiträge
 
Delphi 2010 Professional
 
#1

Procedure mit vielen Parametern ...

  Alt 20. Sep 2006, 11:47
Moin !

Ich stehe da gerade mal wieder vor einem kleinen Problem ...
Und zwar erstelle ich gerade eine Unit die mir grundlegende Reporting Funktionen für die WPTools zur Verfügung stellt.
Das kann dann z.B. so aussehen:

Delphi-Quellcode:
procedure WriteText(RTFMemo : TWPCustomRtfEdit;
                    Mode : TWPCreateDemoText;
                    Text : String;
                    Color : TColor;
                    Font : String);
Nun möchte ich aber bei Standarttext nicht immer alle Parameter angeben. Sondern ich will nur das nötigstes (also den Text und das zu verwendenen RTF) angeben.
Aber eine Notation wie ...
WriteText(RTF, , 'Wir erstellen einen kleinen Reoprt ...',,); quitiert der Compiler sofort mit "Nicht genügend wirkliche Parameter" oder "Ausdruck erwartet, aber ',' gefunden"

Gibts da irgendeinen Weg? Oder muss ich mir wirklich mehrere Funktionen anlegen die dann mitunter nur eine kleine Teilmenge der Parameter bieten?
Dominik Schmidt
Greetz Dominik

I love Delphi 2007/2010
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#2

Re: Procedure mit vielen Parametern ...

  Alt 20. Sep 2006, 11:50
Moin,

du musst den Default-Wert in der Deklaration angeben:
procedure Foo(Bar: String; Foobar: Integer = 0);

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
moelski

Registriert seit: 31. Jul 2004
1.110 Beiträge
 
Delphi 2010 Professional
 
#3

Re: Procedure mit vielen Parametern ...

  Alt 20. Sep 2006, 11:51
Sachen gibts

Danke

Werds gleich mal probieren.
Dominik Schmidt
Greetz Dominik

I love Delphi 2007/2010
  Mit Zitat antworten Zitat
moelski

Registriert seit: 31. Jul 2004
1.110 Beiträge
 
Delphi 2010 Professional
 
#4

Re: Procedure mit vielen Parametern ...

  Alt 20. Sep 2006, 11:56
Öhm ... Das klappt mit werten die hinten angehängt werden ...

Aber wenn ich nun in
Delphi-Quellcode:
procedure WriteText(RTFMemo : TWPCustomRtfEdit;
                    Mode : TWPCreateDemoText = wpAppendText;
                    Text : String = '';
                    Color : TColor = clBlack);
                    Font : String = 'Arial');
das "Mode" nicht angeben will, Text - Font aber schon?

Weglassen geht dann nicht, denn dann sagt er das die Typen nicht stimmen ...
Und einfach ein , , geht auch nicht ...

Gibts da auch noch nen Trick ?
Dominik Schmidt
Greetz Dominik

I love Delphi 2007/2010
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.033 Beiträge
 
Delphi 12 Athens
 
#5

Re: Procedure mit vielen Parametern ...

  Alt 20. Sep 2006, 12:04
Zitat von moelski:
Weglassen geht dann nicht, denn dann sagt er das die Typen nicht stimmen ...
Und einfach ein , , geht auch nicht ...

Gibts da auch noch nen Trick ?
Ja, du kannst die funktion sschießlich auch noch überladen ^^

Code:
procedure WriteText(RTFMemo : TWPCustomRtfEdit;
                    [color=#ff0000][b]Mode   : TWPCreateDemoText = wpAppendText;[/b][/color]
                    Text   : String           = '';
                    Color  : TColor           = clBlack;
                    Font   : String           = 'Arial'); [color=#ff0000][b]Overload;[/b][/color]
procedure WriteText(RTFMemo : TWPCustomRtfEdit;
                    Text   : String           = '';
                    Color  : TColor           = clBlack;
                    Font   : String           = 'Arial'); [color=#ff0000][b]Overload;[/b][/color]


...

procedure WriteText(RTFMemo : TWPCustomRtfEdit;
                    Text   : String           = '';
                    Color  : TColor           = clBlack;
                    Font   : String           = 'Arial');
begin
  WriteText(RTFMemo, [color=#ff0000][b]wpAppendText[/b][/color], Text, Color, Font);
end;
[edit]
ich haße diese nichtaktualisierende Cache beim Editieren -.-''
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
moelski

Registriert seit: 31. Jul 2004
1.110 Beiträge
 
Delphi 2010 Professional
 
#6

Re: Procedure mit vielen Parametern ...

  Alt 20. Sep 2006, 12:11
Moin !

Allet klar. Thx !
Dominik Schmidt
Greetz Dominik

I love Delphi 2007/2010
  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#7

Re: Procedure mit vielen Parametern ...

  Alt 20. Sep 2006, 12:20
Hi,

Du kannst auch eine Structur (Record) übergeben. Das lohnt aber nur bei vielen Parametern. Hier Füllst du den Record erst mit null (Fillchar-Methode) und weist dann deine wenigen Parameter zu. Diesen Record übergibst du dann in deiner Methode als Parameter.
Delphi-Quellcode:
type
  TMyRecord = Record
    Param1 : String;
    Param2 : String;
    Param3 : String;
    Param4 : Integer;
    Param5 : Integer;
    Param6 : String;
    Param7 : String;
  end;

Procedure Todo(Params : TMyRecord);
Ein Aufruf kann dann wie folgt geschehen:

Delphi-Quellcode:
procedure Test;
var Params : TMyRecord;
begin
  Fillchar(Params, Sizeof(TMyRecord), #0);
  Params.Param1 := 'Mein wert:';
  Params.Param4 := 5;
  ToDo(Params);
end;
Was du dann in ToDo machst weist du besser wie ich. Beachte aber, dass mit FillChar alle werte auf 0 gesetzt werden. Entsprechende Prüfungen auf gültige Werte sind somit obligatorisch.

Gruß oki
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#8

Re: Procedure mit vielen Parametern ...

  Alt 20. Sep 2006, 12:40
Hallo,

ich würde keine Struktur, sondern eine Klasse benutzen.
Das hat den Vorteil, dass im constructor der Klasse
die default-Werte angegeben werden können.


Heiko
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: Procedure mit vielen Parametern ...

  Alt 20. Sep 2006, 13:18
Dafür muss sie erzeugt und freigegeben werden...
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#10

Re: Procedure mit vielen Parametern ...

  Alt 20. Sep 2006, 13:32
Hallo,

dafür vergisst man das Setzen der default-Parameter nicht.


Heiko
Heiko
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 02:53 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