Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi function mit optionalen Parametern (https://www.delphipraxis.net/14260-function-mit-optionalen-parametern.html)

Nikolas 5. Jan 2004 18:50


function mit optionalen Parametern
 
Ich würde gerne in einer function einen Befehlsblock je nach Situation abarbeiten lassen oder nicht.
Das würde ich gerne über eine optionale Parameter-Variable regeln. Ich habe die Funktion schon in meinem Programm integriert und würde nun nachträglich diese Variable gerne als optionalen Parameter einbauen. F1 hilft mir auch nicht weiter.
Ich bin für jede Idee dankbar.

Toxman

Jens Schumann 5. Jan 2004 18:54

Re: function mit optionalen Parametern
 
Hallo Toxman,
auch hier gibt es zwei verschiedene Möglichkeiten:

1. einen optionalen Parameter hinzufügen:
function EineFunktion(Param1, Param2 : Integer; Machwas : Boolean = False) : Ergebnis
- Machwas ist hier der optionale Parameter.

2. Überladen:
function EineFunktion(Param1, Param2 : Integer) : Ergebnis; overload;
function EineFunktion(Param1, Param2 : Integer; Machwas : Boolean ) : Ergebnis; overload;

Nikolas 5. Jan 2004 19:07

Re: function mit optionalen Parametern
 
Danke,
Das Problem bei 1. ist, dass ich dann bei jedem Aufruf diese Varibale mit true oder false füttern muss. Da ich sie aber schon ziemlich oft integriert habe, wäre das ein großer Aufwand und mit der großen Gefahr verbunden, irgendwo Fehler einzubauen.

zu 2. Das mit overload hatte ich schon gefunden, aber irgendwie hab ich da was gelesen, dass sich die Parameter-Listen nur in den Variablentypen( integer, bool ,..) unterscheiden dürfen, und nicht in der Anzahl oder Benennung der Parameter unterscheiden dürfen. Ich hab's trotzdem mal so ausprobiert, aber dauernd Fehlermeldungen bekommen. :wall: Irgendwie muss ich da woanders in der Deklaration einen Fehler gemacht haben.

Danke :thuimb:

Stanlay Hanks 5. Jan 2004 19:11

Re: function mit optionalen Parametern
 
Also so wie Jens das geschrieben hat, sollte das schon funktionieren.
Zum Überladen:

In der Online Hilfe steht zum Beispiel

Überladene Routinen müssen hinsichtlich der Anzahl der entgegengenommenen Parameter oder der Typen dieser Parameter eindeutig sein. Die folgenden beiden Deklarationen führen deshalb zu einem Fehler bei der Compilierung:

function Cap(S: string): string; overload;
...
procedure Cap(var Str: string); overload;
...

Dagegen sind die folgenden Deklarationen zulässig:

function Func(X: Real; Y: Integer): Real; overload;
...
function Func(X: Integer; Y: Real): Real; overload;
...


Vielleicht schafft das etwas Klarheit.

Man liest sich, Stanlay :hi:


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:54 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