![]() |
Lineare Parameterüberladung (wie bei PHP echo() ) in Delphi
Hallo liebe DelphiPraxis-Gemeinde,
Ich habe gerade eine Funktion geschrieben, mit welcher man ein Array erstellen kann, damit aber verständlich wird was ich meine bzw bezwecken will folgt etwas Code:
Delphi-Quellcode:
Ganz klar: Man kann das jetzt beliebig oft wiederholen - z.B. 255 mal oder MAX_INTEGER mal oder etc.
type
TMyRecord = record sinnlos: Boolean; end; TMyRecordArray = Array of TMyRecord; function AMyRecordArray(record1: TMyRecord): TMyRecordArray; overload; inline; function AMyRecordArray(record1, record2: TMyRecord): TMyRecordArray; overload; inline; function AMyRecordArray(record1, record2, record3: TMyRecord): TMyRecordArray; overload; inline; In anderen (Skript-)Sprachen gibt es Sprackonstrukte um ALLGEMEINE Paramterlisten zu bekommen; um mal ein populäres Beispiel zu bringen: ![]() ![]() Gibt es die Möglichkeit eine Funktion linear (d.h. für den selben Parametertypen) zu überladen? Viele Grüße aus dem momentan äußerst verregneten Taunus, Philipp |
Re: Lineare Parameterüberladung (wie bei PHP echo() ) in Del
Das sollte auch in Delphi funktionieren. Ich meine das auch schon bei mitgelieferten Funktionen von Delphi gesehen zu haben. Den Begriff "lineare Parameterüberladung" habe ich aber noch nie gehört.
|
Re: Lineare Parameterüberladung (wie bei PHP echo() ) in Del
Eine Alternative wären offene Array-Parameter:
Delphi-Quellcode:
Grüsse, Dirk
procedure Foo(const b: array of Boolean);
var i: Integer; begin for i := Low(b) to High(b) do ... end; var a, b, c, d: Boolean; begin Foo([True, b, c, d]); Foo(a); end; |
Re: Lineare Parameterüberladung (wie bei PHP echo() ) in Del
In Delphi kann man sowas leider nicht programmieren.
Einige der alten Pascalfunktionen (ala WriteLn) können sowas, aber dort ist quasi viel "CompilerMagic" im Spiel. Mit Array-Parametern kann man Vieles hinbekommen, aber dann muß man mit dem Zusätzlichen [ ] leben.
Delphi-Quellcode:
Bemerke: Dieses muß durekt als Parameter (siehe Tryer) und nicht als eigenständiger Typ deklariert werden.
Array of Const
Array of Variant und eventuell noch Array of TMyRecord; |
Re: Lineare Parameterüberladung (wie bei PHP echo() ) in Del
Indirekt kann man solche Schweinereien machen, indem du eine Scriptsprache einbindest :mrgreen:
Mit Lua z.B. habe ich so etwas schonmal gemacht, da kannst du dann die variablen Parameter auf den Stack pushen und wieder runterpoppen. Das macht aber eigentlich nur dann Sinn, wenn man die Scriptsprache auch wirklich braucht, ansonsten ist es Irrsinn :mrgreen: |
Re: Lineare Parameterüberladung (wie bei PHP echo() ) in Del
Zitat:
Siehe auch hier: ![]() |
Re: Lineare Parameterüberladung (wie bei PHP echo() ) in Del
Zitat:
Das macht den Overhead eines array of const (= array of TVarRec) wie in der Format-Funktion überflüssig. Unter dem Eintrag "offene Array-Parameter" gibt es alle Aufrufvarianten (eben auch Variant-lose ;)) in der Delphi-Hilfe. Grüsse, Dirk |
Re: Lineare Parameterüberladung (wie bei PHP echo() ) in Del
Vielen Dank an alle Delphi-Kenner für eure Antworten :)
Ich werde wohl den offenen Array-Typ benutzen - das erledigt eigl. genau das was ich brauche :mrgreen: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:59 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