AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Beliebige Menge von Objekten als Parameter übergeben?
Thema durchsuchen
Ansicht
Themen-Optionen

Beliebige Menge von Objekten als Parameter übergeben?

Ein Thema von PeterPanino · begonnen am 23. Aug 2006 · letzter Beitrag vom 23. Aug 2006
Antwort Antwort
Seite 1 von 2  1 2      
PeterPanino

Registriert seit: 4. Sep 2004
1.465 Beiträge
 
Delphi 10.4 Sydney
 
#1

Beliebige Menge von Objekten als Parameter übergeben?

  Alt 23. Aug 2006, 15:08
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.
  Mit Zitat antworten Zitat
Benutzerbild von hanselmansel
hanselmansel

Registriert seit: 23. Feb 2005
Ort: Kaiserslautern
279 Beiträge
 
Delphi 2009 Enterprise
 
#2

Re: Beliebige Menge von Objekten als Parameter übergeben?

  Alt 23. Aug 2006, 15:16
Wenn es dir darum geht, eine beliebige Menge zu übergeben, kannst du ein dynamisches Array verwenden.

MfG,

hanselmansel
Es gibt nur sehr wenige Probleme auf dieser Welt, die sich nicht mit einigen hundert Gramm Sprengstoff lösen ließen.
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#3

Re: Beliebige Menge von Objekten als Parameter übergeben?

  Alt 23. Aug 2006, 15:17
Für so etwas gibt es Delphi-Referenz durchsuchenOffene Array-Parameter.
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Jürgen Thomas

Registriert seit: 13. Jul 2006
Ort: Berlin
750 Beiträge
 
#4

Re: Beliebige Menge von Objekten als Parameter übergeben?

  Alt 23. Aug 2006, 15:27
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
#D mit C# für NET, dazu Firebird
früher: Delphi 5 Pro, Delphi 2005 Pro mit C# (also NET 1.1)
Bitte nicht sauer sein, wenn ich mich bei Delphi-Schreibweisen verhaue; ich bin inzwischen an C# gewöhnt.
  Mit Zitat antworten Zitat
PeterPanino

Registriert seit: 4. Sep 2004
1.465 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: Beliebige Menge von Objekten als Parameter übergeben?

  Alt 23. Aug 2006, 15:48
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. ???
  Mit Zitat antworten Zitat
PeterPanino

Registriert seit: 4. Sep 2004
1.465 Beiträge
 
Delphi 10.4 Sydney
 
#6

Re: Beliebige Menge von Objekten als Parameter übergeben?

  Alt 23. Aug 2006, 15:57
... 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?
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#7

Re: Beliebige Menge von Objekten als Parameter übergeben?

  Alt 23. Aug 2006, 15:58
Zitat:
Geht das also in Object.Pascal nicht?
Nein.

  Mit Zitat antworten Zitat
Benutzerbild von hanselmansel
hanselmansel

Registriert seit: 23. Feb 2005
Ort: Kaiserslautern
279 Beiträge
 
Delphi 2009 Enterprise
 
#8

Re: Beliebige Menge von Objekten als Parameter übergeben?

  Alt 23. Aug 2006, 16:04
Soweit ich weiß kannst du sehrwohl Mengen als Parameter übergeben. Du hast nur versucht, eine Menge von Objekten (oder auch deren Namen... ) 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.
Es gibt nur sehr wenige Probleme auf dieser Welt, die sich nicht mit einigen hundert Gramm Sprengstoff lösen ließen.
  Mit Zitat antworten Zitat
moonwhaler

Registriert seit: 22. Dez 2005
57 Beiträge
 
Delphi 5 Enterprise
 
#9

Re: Beliebige Menge von Objekten als Parameter übergeben?

  Alt 23. Aug 2006, 16:06
Wie also genau funktioniert es dann?
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?
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#10

Re: Beliebige Menge von Objekten als Parameter übergeben?

  Alt 23. Aug 2006, 16:08
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 .
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:41 Uhr.
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