Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Beliebig viele Parameter bei Procedure oder Function
Jakob Schöttl - Fr 26.10.07 15:41
Titel: Beliebig viele Parameter bei Procedure oder Function
Hallo,
in C++ ist es ja möglich eine Funktion zu definieren, der man beliebig viele Parameter gleichen Typs mitgeben kann.
Oder auch bei Delphi die Procedure Write().
Wie deklariere ich bei Delphi so eine Funktion?
Ich hoffe ihr könnt mir helfen, das wäre nähmlich grade echt praktisch.
mkinzler - Fr 26.10.07 15:46
Jein. man kann zwar keine Prozeduren/Funktionen mit variabler anzahl Parameter schreiben, man kann Parameter aber mit Defaultwerten belegen, dann muss man diese beim Aufruf nicht übergeben.
Jakob_Ullmann - Fr 26.10.07 15:49
Hoffe ich habe deine Frage richtig verstanden. Eigentlich sieht das so aus:
Delphi-Quelltext
1:
| procedure proc_name(Parameter1, Parameter2, ParameterX: Integer); |
Hoffe, ich konnte helfen.
Jakob Schöttl - Fr 26.10.07 15:51
ok, dann gebe ich mal vllt 10 Parameter mit Default-Werten an, oder ich mach ein Array...
Bisschen schade, weißt du wieso das dann bei dieser Write-Procedure geht? Wahrscheinlich ist die sozusagen eingebaut.
Jakob Schöttl - Fr 26.10.07 15:56
Jakob_Ullmann hat folgendes geschrieben: |
Hoffe ich habe deine Frage richtig verstanden. Eigentlich sieht das so aus:
Delphi-Quelltext 1:
| procedure proc_name(Parameter1, Parameter2, ParameterX: Integer); |
Hoffe, ich konnte helfen. |
nein, ich meinte eben dass man, wenn die Procedure schon deklariert und implementiert und fertig ist, beliebig viele Parameter beim Aufruf angeben kann, ohne alle (zb) 100 in der Deklaration geschrieben zu haben.
Bei C++ sieht das glaub ich so aus, und dann kann man mit Hilfe von Makros mit den Parametern arbeiten:
C#-Quelltext
1:
| int func(int anzahl, ...) ; |
Delete - Fr 26.10.07 16:02
Guck dir mal
const Args: array of const an, wie es von der Funktion
Format verwendet wird.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| procedure Foobar(args: array of const); begin ShowMessage(IntToStr(Length(args))); end;
procedure TForm1.Button1Click(Sender: TObject); begin Foobar(['Test1', 'Test2', 42]); end; |
BenBE - Sa 27.10.07 21:37
Alternativ kann man nen kleinen Hack machen, der allerdings nen C-Compiler erfordert:
Man schreibt die besagte Funktion in C und nutzt hierbei als Aufruf-Konvention __cdecl. In Delphi bindet man nun die Object-File von C mit {$O function.obj} ein und deklariert die besagte Funktion als external; cdecl; varargs;. Ist zwar nicht sauber, geht aber :P
Jakob Schöttl - So 28.10.07 11:59
ah, das array of const ist super, danke!
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!