![]() |
Procedure mit vielen Parametern ...
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:
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.
procedure WriteText(RTFMemo : TWPCustomRtfEdit;
Mode : TWPCreateDemoText; Text : String; Color : TColor; Font : String); Aber eine Notation wie ...
Delphi-Quellcode:
quitiert der Compiler sofort mit "Nicht genügend wirkliche Parameter" oder "Ausdruck erwartet, aber ',' gefunden"
WriteText(RTF, , 'Wir erstellen einen kleinen Reoprt ...',,);
Gibts da irgendeinen Weg? Oder muss ich mir wirklich mehrere Funktionen anlegen die dann mitunter nur eine kleine Teilmenge der Parameter bieten? :coder2: |
Re: Procedure mit vielen Parametern ...
Moin,
du musst den Default-Wert in der Deklaration angeben:
Delphi-Quellcode:
;)
procedure Foo(Bar: String; Foobar: Integer = 0);
Greetz alcaeus |
Re: Procedure mit vielen Parametern ...
Sachen gibts :shock:
Danke :thumb: Werds gleich mal probieren. |
Re: Procedure mit vielen Parametern ...
Öhm ... Das klappt mit werten die hinten angehängt werden ...
Aber wenn ich nun in
Delphi-Quellcode:
das "Mode" nicht angeben will, Text - Font aber schon?
procedure WriteText(RTFMemo : TWPCustomRtfEdit;
Mode : TWPCreateDemoText = wpAppendText; Text : String = ''; Color : TColor = clBlack); Font : String = 'Arial'); 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 ? |
Re: Procedure mit vielen Parametern ...
Zitat:
Code:
[edit]
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; ich haße diese nichtaktualisierende Cache beim Editieren -.-'' |
Re: Procedure mit vielen Parametern ...
Moin !
Allet klar. Thx ! |
Re: Procedure mit vielen Parametern ...
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:
Ein Aufruf kann dann wie folgt geschehen:
type
TMyRecord = Record Param1 : String; Param2 : String; Param3 : String; Param4 : Integer; Param5 : Integer; Param6 : String; Param7 : String; end; Procedure Todo(Params : TMyRecord);
Delphi-Quellcode:
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.
procedure Test;
var Params : TMyRecord; begin Fillchar(Params, Sizeof(TMyRecord), #0); Params.Param1 := 'Mein wert:'; Params.Param4 := 5; ToDo(Params); end; Gruß oki |
Re: Procedure mit vielen Parametern ...
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 |
Re: Procedure mit vielen Parametern ...
Dafür muss sie erzeugt und freigegeben werden...
|
Re: Procedure mit vielen Parametern ...
Hallo,
dafür vergisst man das Setzen der default-Parameter nicht. Heiko |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15: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-2025 by Thomas Breitkreuz