![]() |
Optionale Parameter
Hi,
ich erinnere mich, dass ich in VBasic damals Parameter als optional übergeben konnte (sprich, es ist nciht notwendig diese Parameter zu setzen) ich habe nichts vergleichbares in Delphi gefunden, irre ich mich da? danke! |
Hallo DerKapitalist, ich hab jetzt nicht gesucht danach, aber geht das nicht in dem man den betreffenden Parameter schon in der Deklaration initialisiert? Ich meine so:
Delphi-Quellcode:
Bin mir wie gesagt nicht sicher.
function MyFunction(a: integer; b: integer=0):TSomeType;
Gruß, Sebastian |
Ja so gehts. Gibt aber noch ein paar (notwendige!) Regeln dazu, such mal in der OH nach "Default parameters".
Gruß, Sebastian |
danke!
|
Hallo!
Es gibt noch eine weitere Möglichkeit: OVERLOAD! Damit kannst Du mehrere Prozeduren/Funktionen mit demselben Namen, aber unterschiedlichen Parameterlisten schreiben. Der Compiler erzeugt dann Code, der die von den Parametern her "richtige" Routine aufruft. Die können sich sogar gegenseitig aufrufen. Beispiel:
Code:
Man muß nur für jede mögliche Parameter-Kombination eine Funktion schreiben. Hier wäre ja die Initialisierung in Ordnumg, aber bei einem optionalen VAR-Parameter (var I:integer) hilft nur Overload!
function Test(S: string; I:integer): integer; overload;
begin // der gewünschte Code end; function Test(S: string): integer; overload; begin Result:= Test (S, 0); end; Gruß Dietmar Brüggendiek |
danke! ich habe aber überladene Methoden bewusst nicht verwendet, es ging mir einfach nur um optionale Parameter... leider funktioniert das mit dynamische Arrays nicht.
Im Prinzip fuehrt meine Funktion das selbe aus, deshalb kein overload, ich dachte mir nur, es ist etwas stylischer das so zu programmieren :-) |
Moin Zusammen,
da gibt's doch aber einen gravierenden Unterschied: overload wendet man an, wenn Funktionen gleichen Namens mit unterschiedlichen Parametertypen und Anzahlen aufrufen können soll, und default parameter, wenn einer oder mehrere der Parameter einen Standardwert bekommen können, so dass man nicht alle mitschreiben muss. |
Re: Optionale Parameter
Ich hätte da auch eine Frage zu den Standartwerten...
Wenn ich nun mehrere Default Parameter Deklariert habe und möchte bei dem proceduraufruft die ersten beiden auf standart lassen, und den letzten ändern. Beispiel:
Delphi-Quellcode:
Wenn ich nun nur den Parameter3 einen Neuen wert verpassen will, wie stelle ich es an ?
Procedure TForm1.Machwas(param0:String;param1:integer=1;param2:integer=2;param3:integer=3);
begin // Mach irgendwas; end;
Delphi-Quellcode:
Machwas('test',?,?,9); // ?????
|
Re: Optionale Parameter
Dann wirst Du AFAIK alle Parameter übergeben müssen.
|
Re: Optionale Parameter
Das geht so nicht. Du müsstest dann auch einen Wert für die anderen Parameter festlegen oder einen wert, den du dann im Programm durch den Standradwert ersetzt.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01: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