Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Optionale Parameter (https://www.delphipraxis.net/1920-optionale-parameter.html)

DerKapitalist 30. Dez 2002 16:41


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!

Sebastian Nintemann 30. Dez 2002 16:51

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:
function MyFunction(a: integer; b: integer=0):TSomeType;
Bin mir wie gesagt nicht sicher.
Gruß, Sebastian

Sebastian Nintemann 30. Dez 2002 16:54

Ja so gehts. Gibt aber noch ein paar (notwendige!) Regeln dazu, such mal in der OH nach "Default parameters".

Gruß, Sebastian

DerKapitalist 30. Dez 2002 16:57

danke!

Brüggendiek 30. Dez 2002 21:17

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:
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;
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!

Gruß

Dietmar Brüggendiek

DerKapitalist 30. Dez 2002 21:20

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 :-)

Christian Seehase 30. Dez 2002 23:38

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.

Real_Thunder 23. Nov 2007 17:45

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:
Procedure TForm1.Machwas(param0:String;param1:integer=1;param2:integer=2;param3:integer=3);
begin
  // Mach irgendwas;
end;
Wenn ich nun nur den Parameter3 einen Neuen wert verpassen will, wie stelle ich es an ?

Delphi-Quellcode:
Machwas('test',?,?,9); // ?????

DeddyH 23. Nov 2007 17:56

Re: Optionale Parameter
 
Dann wirst Du AFAIK alle Parameter übergeben müssen.

mkinzler 23. Nov 2007 17:56

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 21:51 Uhr.
Seite 1 von 2  1 2      

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