Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi Beim Aufruf einer Methode nur bestimmte Parameter übergeben (https://www.delphipraxis.net/168333-beim-aufruf-einer-methode-nur-bestimmte-parameter-uebergeben.html)

Nico93 15. Mai 2012 20:08

Beim Aufruf einer Methode nur bestimmte Parameter übergeben
 
Hallo zusammen,

leider benötige ich noch einmal Hilfe.

Ich habe eine Funktion, welche mit mehreren Parametern aufgerufen werden muss. Einige davon haben einen Default-Wert, sodass ich diese Parameter nicht angeben muss.
Jetzt ist das Problem, dass ich beim Aufruf der Funktion nur einige Parameter übergeben möchte und der Rest soll den Default Wert erhalten.
Bsp:

Delphi-Quellcode:
function (Param1, Param2: string; Param3: Integer=2; param4:   string='test'; Param5: Integer=1):string
Wie bekomme ich es hin, wenn ich jetzt die Funktion aufrufe, die "Pflicht-Parameter" 1 und 2 eingebe, aber dann nur noch z.B. Param5 übergeben möchte und der Rest soll den Default-Wert behalten?

Danke für die Hilfe.

jfheins 15. Mai 2012 20:23

AW: Beim Aufruf einer Methode nur bestimmte Parameter übergeben
 
Gar nicht. Defaultwerte gibt es nur für Parameter die nicht angegeben wurden.
Um den Parameter ganz rechts anzugeben bist du gezwungen für die Parameter dazwischen ebenfalls Werte anzugeben.

Du kannst entweder in der Deklaration nachschauen, welche Werte denn die defaultwerte sind, oder (falls du der Autor bist) mehrere Versionen der Funktion anbieten, deren default Parameter anders sortiert sind.

Nico93 15. Mai 2012 20:43

AW: Beim Aufruf einer Methode nur bestimmte Parameter übergeben
 
ok danke für die Hilfe.

himitsu 15. Mai 2012 23:49

AW: Beim Aufruf einer Methode nur bestimmte Parameter übergeben
 
Es kommt auf die Parameter drauf an, aber man kann auch Funktionen überladen. Dafür müssen sich die Typen der Parameter entsprechend unterscheiden.

Delphi-Quellcode:
procedure blub(s: string = ''; i: Integer = 0); overload;
procedure blub(k: Integer); overload;
String (s) und Integer (k) unterscheiden sich, so daß Delphi hier entscheiden kann, was es nehmen muß.

Delphi-Quellcode:
blub; // 1
blub(123); // 2
blub('text'); // 1
blub('x', 456); // 1


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:59 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 by Thomas Breitkreuz