![]() |
Delphi-Version: 2007
Unendlich Parameter
Hallöchen!
Wie kann man eine Procedure mit unendlich Parametern schreiben? Also wie ist die Syntax dafür? WriteLN() hat das ja, aber ich finde WriteLN() nicht in der System-Unit... Könnte mir das jemand erklären? Dankeschön:-D |
AW: Unendlich Parameter
Hi Julian,
unendliche Anzahl an Parametern verschiedener Typen, oder unendliche Anzahl eines Typs? Grüße Klaus |
AW: Unendlich Parameter
In meinem Falle: Unendliche Anzahl von Strings;
Dabei soll das kein StringArray oder ähnliches sein... Denn das wüsste ich ja schon... Ich will ja alles wissen ;) BTW: Ahhh. Auszug aus System.pas:
Code:
{ Predefined constants, types, procedures, }
{ and functions (such as True, Integer, or } { Writeln) do not have actual declarations.} { Instead they are built into the compiler } { and are treated as if they were declared } { at the beginning of the System unit. } |
AW: Unendlich Parameter
Die Format-Funktion nimmt "unendlich viele" Parameter entgegen, allerdings brauchst du dann ein
Delphi-Quellcode:
.
array of const
Bernhard |
AW: Unendlich Parameter
gibt es dann noch eine andere Möglichkeit?
Ich möchte nämlich eine procedure schreiben, die öffentlich zugänglich ist, und kein User die Procedure ändern muss, damit er sie nutzen kann... Ein Beispiel wäre eine ListView.Items.Add procedure:
Code:
Also wie die WriteLN procedure
procedure sProc1(a: TListView; [P1; [..., PN]]);
begin With a.Items.Add do begin end; end; |
AW: Unendlich Parameter
.. bei WriteLn ist das Compiler Magic.
Ein Beispiel mit array of const kannst Du ![]() Grüße Klaus |
AW: Unendlich Parameter
bei einem Typ:
Delphi-Quellcode:
(dieses muß aber in der Prozedur und nicht alseigentständiger Typ deklariert sein, also als Open-Array)
array of ...
bei unbestimmten/gemischten Typen:
Delphi-Quellcode:
.
array of const
ansonsten gibt es noch die vordefinierten Parameter und überladene Prozeduren.
Delphi-Quellcode:
Sowas wie WriteLn kann man leider nicht selber deklarieren :cry:
// beliebig viele Integer
procedure Test(Params: array of integer); // beliebig viele gemischte Typen procedure Test(Params: array of const); // vordefiniert, mit einem Festen und 2 dynamischen Parametern, welche man setzen kann oder auch nicht procedure Text(Param1: Integer; Param2: Integer = 0; Param3: Integer = 0); // überladen (1 bis 3 Parameter) procedure Text(Param1: Integer); overload; procedure Text(Param1, Param2: Integer); overload; procedure Text(Param1, Param2, Param3: Integer); overload; |
AW: Unendlich Parameter
Oder lege ein Funktion mit sehr vielen vorbelegten Parametern an
Delphi-Quellcode:
function MachWas( a: string; b: string = ''; c: string = ''; ...): string;
... implementation function MachWas( a: string; b: string = ''; c: string = ''; ...): string; begin Result := a+b+c+...; end; |
AW: Unendlich Parameter
Zitat:
MfG |
AW: Unendlich Parameter
Wenn du dir einen eigenen Compiler schreibst :green:
Compiler magic bedeutet dass es keine normale Funktion ist sondern von Compiler direkt umgesetzt wird |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:39 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 by Thomas Breitkreuz