Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Optionaler Parameter (https://www.delphipraxis.net/78675-optionaler-parameter.html)

EWeiss 9. Okt 2006 10:42


Optionaler Parameter
 
Hi

Ich möchte gerne in einer Function einen Optionalen parameter übergeben
Wie wird dieser deklariert?

gruß

Klaus01 9. Okt 2006 10:45

Re: Optionaler Parameter
 
Dazu gibt es keine Kennzeichnung.

Diese Funktionalität bekommst Du nur wenn Du Objektmethoden überlädtst.
Hilfe-> overload.

Grüße
Klaus

EWeiss 9. Okt 2006 10:47

Re: Optionaler Parameter
 
Zitat:

Zitat von Klaus01
Dazu gibt es keine Kennzeichnung.

Diese Funktionalität bekommst Du nir wenn Du Objektmethoden überlädtst.
Hilfe-> overload.

Grüße
Klaus

werds mir mal anschauen ;)
Danke

gruß

PUSCH ...

Komm nicht ganz klar
Das wäre meine VB Zeile!
Code:
Public Function AddWindow(ByVal hwnd As Long, Optional ByVal hWndParent As Long = 0) As Boolean
Delphi-Quellcode:
function AddWindow(Handle: Integer; Optional hWndParent: Integer := 0): Boolean;
Das geht ja leider nicht.

Kann man den Parameter nicht in einer anderen weise direkt als Defaultwert übergeben ?
Delphi-Quellcode:
Optional hWndParent: Integer := 0
gruß

CalganX 9. Okt 2006 10:50

Re: Optionaler Parameter
 
Hi,
alternativ kannst du auch folgendes machen:
Delphi-Quellcode:
procedure ProcWithOptParam(a, b, c: string; d: integer; e: string = 'default');
Chris

sakura 9. Okt 2006 10:50

Re: Optionaler Parameter
 
Zitat:

Zitat von Klaus01
Dazu gibt es keine Kennzeichnung.

Das ist schlichtweg falsch! Optionale Parameter müssen in Delphi immer am Ende stehen, die Anzahl derer ist fast unbegrenzt ;)
Delphi-Quellcode:
procedure MitOptionalenParams(NichtOptional: string; Optional: string = 'standardWert'; AuchOptional: Byte = 1);
...:cat:...

EWeiss 9. Okt 2006 10:56

Re: Optionaler Parameter
 
Zitat:

Zitat von sakura
Zitat:

Zitat von Klaus01
Dazu gibt es keine Kennzeichnung.

Das ist schlichtweg falsch! Optionale Parameter müssen in Delphi immer am Ende stehen, die Anzahl derer ist fast unbegrenzt ;)
Delphi-Quellcode:
procedure MitOptionalenParams(NichtOptional: string; Optional: string = 'standardWert'; AuchOptional: Byte = 1);
...:cat:...

Ahh das sieht schon mal nicht schlecht aus! ;)

Delphi-Quellcode:
function AddWindow(Handle: Integer; hWndParent: Integer = 0): Boolean;
Danke.

gruß

Phoenix 9. Okt 2006 11:03

Re: Optionaler Parameter
 
Urgs. Naja, die 'richtige' Methode default Parameter zu übergeben ist eigentlich tatsächlich das überschreiben.

Will heissen Du machst eine Methode die diesen Parameter annimmt und eine weitere, die diesen Parameter nicht annimmt und die andere Methode mit ihren eigenen Argumenten plus dem vorbelegten Wert aufruft.

Hat zum einen den Vorteil, dass Du die Standardbelegung bei Bedarf parametrisieren kannst und zum anderen ist das leichter Wartbar. Ist zwar eher ne Stilfrage, aber ich hab anfangs in C# auch Defaultparameter schmerzlich vermisst und inzwischen favorisiere ich die sauberere OOP-Lösung mit dem Überschreiben.

EWeiss 9. Okt 2006 11:17

Re: Optionaler Parameter
 
Zitat:

Zitat von Phoenix
Urgs. Naja, die 'richtige' Methode default Parameter zu übergeben ist eigentlich tatsächlich das überschreiben.

Will heissen Du machst eine Methode die diesen Parameter annimmt und eine weitere, die diesen Parameter nicht annimmt und die andere Methode mit ihren eigenen Argumenten plus dem vorbelegten Wert aufruft.

Hat zum einen den Vorteil, dass Du die Standardbelegung bei Bedarf parametrisieren kannst und zum anderen ist das leichter Wartbar. Ist zwar eher ne Stilfrage, aber ich hab anfangs in C# auch Defaultparameter schmerzlich vermisst und inzwischen favorisiere ich die sauberere OOP-Lösung mit dem Überschreiben.

Kleines Beispiel anhand meiner Codezeile ?
Brauche Input .. Nach Hause Telefonieren ;)

gruß

Union 9. Okt 2006 11:20

Re: Optionaler Parameter
 
Delphi-Quellcode:
function AddWindow(Handle: Integer; hWndParent: Integer): Boolean; overload;
function AddWindow(Handle: Integer; ): Boolean; overload;

implementation

function AddWindow(Handle: Integer; hWndParent: Integer): Boolean;
begin
   // Programmcode...
end;

function AddWindow(Handle: Integer ): Boolean;
begin
   AddWindow(Handle, 0);
end;

EWeiss 9. Okt 2006 11:27

Re: Optionaler Parameter
 
Zitat:

Zitat von Union
Delphi-Quellcode:
function AddWindow(Handle: Integer; hWndParent: Integer): Boolean; overload;
function AddWindow(Handle: Integer; ): Boolean; overload;

implementation

function AddWindow(Handle: Integer; hWndParent: Integer): Boolean;
begin
   // Programmcode...
end;

function AddWindow(Handle: Integer ): Boolean;
begin
   AddWindow(Handle, 0);
end;

Danke das ist super Service werde es genauso machen!
Direkt von Anfang an richtig so wie es sein muss!

gruß

himitsu 9. Okt 2006 11:27

Re: Optionaler Parameter
 
Bei einer Zuweisund muß zwar ein := genommen werden, aber bei den DefaultParametern ist es wie mit den Konstanten ... also nur = :angel:
Und das Optional wird sozusagen schon durch das = ausgedrückt.
Delphi-Quellcode:
function AddWindow(Handle: Integer; hWndParent: Integer = 0): Boolean;

Wenn es möglich ist, dann kommt man eigentlich mit den DefaulParametern besser hin.
Ersten wird so ein unnötiger Sprung erspart und man spart sich auch die Funktion zum Weiterleiten.

Denn per OVERLOAD sähe es ja so aus:
Delphi-Quellcode:
function AddWindow(Handle: Integer): Boolean; Overload;
function AddWindow(Handle: Integer; hWndParent: Integer): Boolean; Overload;

implementation

function AddWindow(Handle: Integer): Boolean;
  begin
    Result := AddWindow(Handle, 0);
  end;

function AddWindow(Handle: Integer; hWndParent: Integer): Boolean;
  begin
    ...
  end;
[mist, ich lahme ente -.-'']


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