Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Beliebige Menge von Objekten als Parameter übergeben? (https://www.delphipraxis.net/75681-beliebige-menge-von-objekten-als-parameter-uebergeben.html)

PeterPanino 23. Aug 2006 14:08


Beliebige Menge von Objekten als Parameter übergeben?
 
Wie kann man in einer Prozedur als Parameter eine Menge von nicht-ordinalen Objekten übergeben, z.B.:

Delphi-Quellcode:
var
  e1, e2, e3: TEdit;

// Fehler: E2001 Ordinaltyp erforderlich:
procedure DoSomething(MyEdits: Set of TEdit);
begin
  //
end;

//...
  DoSomething([e1, e3]);
//...
Ich möchte für den Paramater keinen Array-Typ verwenden, sondern am besten einen Typ, mit dem eine beliebige Menge von Objekten übergeben werden kann.

hanselmansel 23. Aug 2006 14:16

Re: Beliebige Menge von Objekten als Parameter übergeben?
 
Wenn es dir darum geht, eine beliebige Menge zu übergeben, kannst du ein dynamisches Array verwenden.

MfG,

hanselmansel

Khabarakh 23. Aug 2006 14:17

Re: Beliebige Menge von Objekten als Parameter übergeben?
 
Für so etwas gibt es Delphi-Referenz durchsuchenOffene Array-Parameter.

Jürgen Thomas 23. Aug 2006 14:27

Re: Beliebige Menge von Objekten als Parameter übergeben?
 
Wenn es verschiedenartige Parameter sein sollen, kannst Du Dich am Quelltext der Format-Funktion orientieren:
{Delphi_2005}\source\Win32\rtl\sys\SysUtils.pas
Delphi-Quellcode:
procedure FmtStr(var Result: string; const Format: string;
  const Args: array of const);
Jürgen

PeterPanino 23. Aug 2006 14:48

Re: Beliebige Menge von Objekten als Parameter übergeben?
 
Zitat:

Zitat von Jürgen Thomas
Wenn es verschiedenartige Parameter sein sollen, kannst Du Dich am Quelltext der Format-Funktion orientieren:
{Delphi_2005}\source\Win32\rtl\sys\SysUtils.pas
Delphi-Quellcode:
procedure FmtStr(var Result: string; const Format: string;
  const Args: array of const);
Jürgen

Hm, in der Hilfe ist Args als array of TVarRec deklariert, im Quelltext von FmtStr jedoch als array of const. ???

PeterPanino 23. Aug 2006 14:57

Re: Beliebige Menge von Objekten als Parameter übergeben?
 
... und FmtStr ruft FormatBuf auf, das eine Assembler-Routine ist ...

Bei Arrays muss man den einzelnen Array-Elementen vorher die Werte zuweisen. Eleganter und einfacher wäre es, wenn man die Objektnamen einfach als Parameter in den Prozeduraufruf schreiben könnte, also z.B. DoSomething([e1, e3]); aber das geht ja nicht, weil Set of kein ordinaler Typ ist.

Geht das also in Object.Pascal nicht?

Meflin 23. Aug 2006 14:58

Re: Beliebige Menge von Objekten als Parameter übergeben?
 
Zitat:

Geht das also in Object.Pascal nicht?
Nein.


hanselmansel 23. Aug 2006 15:04

Re: Beliebige Menge von Objekten als Parameter übergeben?
 
Soweit ich weiß kannst du sehrwohl Mengen als Parameter übergeben. Du hast nur versucht, eine Menge von Objekten (oder auch deren Namen... :gruebel: ) zu erstellen, und daran hapert es AFAIK. Die Elemente müssen einen ordinalen also zählbaren Typ haben.
Es funktioniert zum Beispiel mit allen Zahlen bis 255 oder den Wochentagen oder ein paar Farben oder so... :|

Darum wird dir oben geraten ein Array von Objekten zu übergeben. :thumb:

moonwhaler 23. Aug 2006 15:06

Re: Beliebige Menge von Objekten als Parameter übergeben?
 
Wie also genau funktioniert es dann?
Zitat:

Zitat von Meflin
Zitat:

Geht das also in Object.Pascal nicht?
Nein.

Wie also funktioniert es dann genau? Mich würde das auch interessieren...

Gruss.

P.S.: Eine doppelte Verneinung ist ja wieder als Bejaung zu verstehen, richtig?

Khabarakh 23. Aug 2006 15:08

Re: Beliebige Menge von Objekten als Parameter übergeben?
 
Zitat:

Zitat von PeterPanino
Eleganter und einfacher wäre es, wenn man die Objektnamen einfach als Parameter in den Prozeduraufruf schreiben könnte, also z.B. DoSomething([e1, e3]);

Genau das ermöglichen dir doch offene Array-Parameter :gruebel: .


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:18 Uhr.
Seite 1 von 2  1 2      

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