AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Variable Argumente

Ein Thema von Lucaito · begonnen am 1. Jul 2009 · letzter Beitrag vom 2. Jul 2009
Antwort Antwort
Lucaito

Registriert seit: 9. Jan 2009
20 Beiträge
 
#1

Variable Argumente

  Alt 1. Jul 2009, 14:01
So, ich wollt mal von euch wissen, ob folgendes vllt möglich ist:

Ich will eine Funktion, die ein Argument erwartet. Das Argument wird in einer Case-Verzweigung ausgewertet...
Bei einem bestimmten Argument soll dann allerdings noch ein zweites mitgegeben werden, was ich dann brauche, allerdings nur bei diesem bestimmten.

Hoffe meine Frage is verstaendlich und nich zu kompliziert formuliert. :)

Im hoffen auf Antworten, Luc~

PS: Und nein, ich meine keine Variable langen Argumentlisten, das würde nämlich nich damit gehn, da meine Argumente verschiedene Typen ham ;(
  Mit Zitat antworten Zitat
quendolineDD

Registriert seit: 19. Apr 2007
Ort: Dresden
781 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Variable Argumente

  Alt 1. Jul 2009, 14:04
Dein Stichwort ist Overload. Damit kannst du gleichnahmige Funktionen mit unterschiedlichen Parametern definieren.
Delphi-Quellcode:
  function MachWas(i : Integer) : Boolean; overload;
  function MachWas(p : Pointer; l : Integer) : Boolean; overload;
Lars S.
Wer nicht mit der Zeit geht, geht mit der Zeit.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.541 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Variable Argumente

  Alt 1. Jul 2009, 14:05
Meinst Du so etwas (sinnfreies Beispiel)?
Delphi-Quellcode:
function EineFunction(intvar: integer; stringvar: string = ''): integer;
begin
  case intvar of
    0: Result := 0;
    1: if stringvar = 'Wuppdithen
         Result := 1
       else
         Result := -1;
    else
      Result := 2;
  end;
end;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von leddl
leddl

Registriert seit: 13. Okt 2003
Ort: Künzelsau
1.613 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Variable Argumente

  Alt 1. Jul 2009, 14:06
Zitat von quendolineDD:
Dein Stichwort ist Overload.
Nö, das hilft doch hier gar nichts. Interessanter sind da Standardparameter
function NeFunktion(parameter1 : String; parameter2 : String = '') : Boolean Der zweite Parameter muss nicht angegeben werden und wäre in dem Fall dann ein leerer String.
Axel Sefranek
A programmer started to cuss, cause getting to sleep was a fuss.
As he lay there in bed, looping round in his head
was: while(!asleep()) ++sheep;
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.347 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Variable Argumente

  Alt 1. Jul 2009, 14:10
Zitat von Lucaito:
PS: Und nein, ich meine keine Variable langen Argumentlisten, das würde nämlich nich damit gehn, da meine Argumente verschiedene Typen ham ;(
Das ginge auch, siehe den Befehl Format z.B., sowas kann man als array of const zum Beispiel lösen. Ob es hier eine passende Lösung ist, musst du selbst überlegen.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Lucaito

Registriert seit: 9. Jan 2009
20 Beiträge
 
#6

Re: Variable Argumente

  Alt 1. Jul 2009, 14:14
Hui das ging mal wieder schnell. :D

Zitat von quendolineDD:
Dein Stichwort ist Overload.
Gute Idee... xD
Wollt zwar eig alles in eine Function packen, sollte aber auch damit wunderbar funzen, danke dafür! :)
Zitat von leddl:
function NeFunktion(parameter1 : String; parameter2 : String = '') : Boolean Der zweite Parameter muss nicht angegeben werden und wäre in dem Fall dann ein leerer String.
D.h. ich kann die Funktion dann auch mit
NeFunktion('blub'); aufrufen?
Wär natürlich perfekt :)
Zitat von jaenicke:
Zitat von Lucaito:
PS: Und nein, ich meine keine Variable langen Argumentlisten, das würde nämlich nich damit gehn, da meine Argumente verschiedene Typen ham ;(
Das ginge auch, siehe den Befehl Format z.B., sowas kann man als array of const zum Beispiel lösen. Ob es hier eine passende Lösung ist, musst du selbst überlegen. ;-)
Ich denk ich werd ich einem der andern beiden Beispiele bedienen, dennoch danke für die antwort! :)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.142 Beiträge
 
Delphi 12 Athens
 
#7

Re: Variable Argumente

  Alt 1. Jul 2009, 14:29
Das mit den Const-Parametern entspricht mehr einem dynamischen Array of Variant, was einen etwas höheren Verwaltungsaufwand bedeutet.

beim Overload kannst du auch einfach den Aufruf weiterleiten (in der einen Funktion die Andere, mit dem ergänztem Parameter, aufrufen)

und zu den Default-Parametern:
das wäre die effektivste Variante, denn dort setzt der Compiler bei nicht angegebenen Parametern direkt den Defaultwert ein.

Delphi-Quellcode:
// die Definition:
function NeFunktion(parameter1 : String; parameter2 : String = '') : Boolean

// du programmierst das so
NeFunktion('blub');

// und nach dem kompilieren steht effektiv dieses in der EXE
NeFunktion('blub', '');
also JA, du kannst es so machen
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Lucaito

Registriert seit: 9. Jan 2009
20 Beiträge
 
#8

Re: Variable Argumente

  Alt 1. Jul 2009, 14:35
Gut, danke für die Hilfe, ich denke ich werd die Sache mit den Standardargumenten nehmen. ^^

Greetz, Luc~
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#9

Re: Variable Argumente

  Alt 2. Jul 2009, 07:40
Hallo,

eine andere, aufwendigere Methode wäre die Verwendung
einer Parameter-Klasse, also einer eigenen Klasse für
die verschiedenen Parameter.

Vorteil ist die einfache Erweiterbarkeit,
wenn neue Parameter hinzukommen sollen.


Heiko
Heiko
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:03 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