Autor Beitrag
cscp
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 49



BeitragVerfasst: So 16.01.05 19:24 
hallo,
wie kann man denn eine prozedur erstellen bei der es MÖGLICH ist, also kein muss, mehrere Variablen zu übergeben?
zb. der aufruf einer solchen prozedur:
vergleiche(['hallo','ciao'],['hello','bye']);
es soll aber auch möglich sein:
vergleiche('hallo','hello');

versteht ihr was ich meine?
danke für eure hilfe!!


Moderiert von user profile iconChristian S.: Topic aus VCL (Visual Component Library) verschoben am So 16.01.2005 um 19:32
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: So 16.01.05 19:32 
Hallo!

Du kannst die Funktion überladen:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
type
  twoStrings = Array[1..2] of String;

type
  TForm1 = class(TForm)
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
    function vergleiche(a, b : String) : Boolean; overload;
    function vergleiche(a, b : twoStrings) : Boolean; overload;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

function TForm1.vergleiche(a, b : String) : Boolean;
begin
  result := (a = b);
end;

function TForm1.vergleiche(a, b : twoStrings) : Boolean;
begin
  result := (a[1] = b[1]) and (a[2] = b[2]);
end;


MfG
Christian

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
tommie-lie
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 4373

Ubuntu 7.10 "Gutsy Gibbon"

BeitragVerfasst: So 16.01.05 19:36 
Titel: Re: procedure / function mit der möglichkeit mehrerer variab
cscp hat folgendes geschrieben:
versteht ihr was ich meine?
Nicht ganz.
In deinem Fall, wo du verschiedene vordefinierte Möglichkeiten hast, die aber alle übergeben werden könnten, würde ich wohl mit einem Set arbeiten. Bei verschiedenen Möglichkeiten, von denen jeweils nur eine zutreffen kann mit einem enumerierten Typ.
Eine unbestimmte Zahl an Paramtern übergibt man einer Funktion normalerweise mit einem offenen Array.
Eine endliche Zahl an optionalen Parametern kann durch Vorbelegung von Parametern geschehen: procedure DoSomethind(var1: Integer; var2: Integer = 0; var3: Integer = 1);Die letzten beiden Parameter müssen dann nicht angegeben werden, aber wenn der dritte angegeben werden soll muss auch zwangsläufig der zweite Angegeben werden, da die vorhandenen Parameter immer von links nach rechts gelesen werden.

_________________
Your computer is designed to become slower and more unreliable over time, so you have to upgrade. But if you'd like some false hope, I can tell you how to defragment your disk. - Dilbert