Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Funktion überladen oder Standardparameter oder ? (https://www.delphipraxis.net/28870-funktion-ueberladen-oder-standardparameter-oder.html)

TomDooley 31. Aug 2004 16:21


Funktion überladen oder Standardparameter oder ?
 
Hallo

Ich rufe in einem Programm zweimal eine Methode auf. Einmal kann ich jedoch auf einen Paramter verzichten... Soll ich nun die Methode überladen, einen Standardparamter verwenden (der dann einfach nicht verwendet wird), einen Dummy-Wert übergeben oder kann man den Paramter gar einfach weglassen?

Delphi-Quellcode:
interface

procedure MachXY(i: integer; s: string)
  case i of
    1: //verwende i und s
    2: //verwende nur i
  ...


implementation

var
  x : integer; //z.B 1
  y : integer; //z.B 2
  z : string;

MachXY(x, z);
 ...

MackXY(y);
 ...
Ich könnte natürlich auch gleich zwei verschiedene Methoden schreiben... Aber das möchte ich eben nicht (ausser das ist wirklich die einzig "wahre" Lösung).

es dankt und grüsst

Tom

himitsu 31. Aug 2004 16:29

Re: Funktion überladen oder Standardparameter oder ?
 
Du kannst auch 'nen Parameter einfach weglassen, indem du 'nen Standartwert übergibst - das ist auch für mehrere Variablen möglich, diese müssen allerdings immer als letztes (ganz rechts) drinstehen.

z.B.:
Delphi-Quellcode:
procedure MachXY(i: integer; s: string = '');
  Begin
  End;


MachXY(123, 'abc');

MachXY(456);
wenn in diesem Beispiel kein Wert für s übergeben wird, dann wird ein leerer String ( '' ) verwendet.

TomDooley 1. Sep 2004 07:25

Re: Funktion überladen oder Standardparameter oder ?
 
Ok, also ein Standardparameter... Was ist wenn ich jetzt anstatt eines Strings ein Objekt oder ein Array hätte? Kann ich dann "nil" übergeben?

Muetze1 1. Sep 2004 09:34

Re: Funktion überladen oder Standardparameter oder ?
 
Moin!

Delphi-Quellcode:
interface

procedure MachXY(i: integer; s: string); Overload;
procedure MachXY(i: integer; o: TObject); Overload;
procedure MachXY(i: integer; r: Real); Overload;


implementation

...
MfG
Muetze1

Nothine 1. Sep 2004 13:32

Re: Funktion überladen oder Standardparameter oder ?
 
Zitat:

Zitat von TomDooley
Ok, also ein Standardparameter... Was ist wenn ich jetzt anstatt eines Strings ein Objekt oder ein Array hätte? Kann ich dann "nil" übergeben?

für objekte kannst du nil als standartparameter benutzen, arrays unterstützen jedoch keine standartparameter

Dax 1. Sep 2004 13:34

Re: Funktion überladen oder Standardparameter oder ?
 
Wenn du Arrays nutzen willst, übergib der Funktion doch einen Array-Pointer, dan geht dort auch ein Standardparameter. Quasi jedenfalls.


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