Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi über Objekte einer Klasse iterieren (https://www.delphipraxis.net/100375-ueber-objekte-einer-klasse-iterieren.html)

Bomberbb 27. Sep 2007 08:46


über Objekte einer Klasse iterieren
 
Hallo!

Ist es möglich in Delhi über die Objekte einer Klasse zu iterieren???

Sascha

s-off 27. Sep 2007 09:05

Re: über Objekte einer Klasse iterieren
 
Hallo,

wenn Deine Klasse das kann; sicher.

Die Klasse TForm hat beispielsweise die Eigenschaft 'ComponentCount' über die sämtliche auf der Form befindlichen Componenten abgefragt werden können (sämtliche Komponenten werden intern in einer TList referenziert). Damit kannst Du dann über die Komponenten iterieren.

peschai 27. Sep 2007 09:12

Re: über Objekte einer Klasse iterieren
 
Hallo
Kannst du kurz beschreiben was du tun möchtest, dann können wir eventuell besser helfen.

Wen du z.b. wissen möchtest wie oft die Klasse TObject instantiiert wurde, also wie oft es das Objeckt "TObject" gibt, so kann dir standard delphi das nicht sagen. Den create bzw destroy prozess müsstest du mitprotokollieren in zb einer eigenen abgeleteteten TMyObject Klasse.

Es gibt aber einige Klassen, welche per definition weintere Klassen verwalten und so etwas bereits mitbringen. das Property "Components" z.b TForm ist hier ein Beispiel.

Bomberbb 27. Sep 2007 09:20

Re: über Objekte einer Klasse iterieren
 
Ja die Möglichkeit mit Components hab ich auch schon gesehen, da wird aber über die Komponenten auf einer Komponente iteriert.

Mein Problem ist, wenn die auf unterschiedlichen Komponenten sitzen, erwische ich nicht alle...

Ich habe eine Komponente von TCustomPanel abgeleitet und möchte nun über alle Objekte iterieren, die sich in meinem Programm befinden. Hatte schon überlegt, etwas ähliches wie einee verkettete Liste im Konstruktor zu erstellen, das bekomme ich aber auch nicht hin, da ich im Konstruktor keinen Zeiger auf mein Objekt bekomme...

Luckie 27. Sep 2007 09:27

Re: über Objekte einer Klasse iterieren
 
Rekursion ist hier das Stichwort.

Bomberbb 27. Sep 2007 09:34

Re: über Objekte einer Klasse iterieren
 
Rekursion? Wie muss ich mir das in diesem Zusammenhang vorstellen?

peschai 27. Sep 2007 09:41

Re: über Objekte einer Klasse iterieren
 
Zitat:

Zitat von Bomberbb
...bekomme ich aber auch nicht hin, da ich im Konstruktor keinen Zeiger auf mein Objekt bekomme...

Innerhalb des constructors nach dem Aufruf von Inherited sollte "Self" die adresse deines Objects sein ...

s-off 27. Sep 2007 09:49

Re: über Objekte einer Klasse iterieren
 
Zitat:

Zitat von peschai
Wen du z.b. wissen möchtest wie oft die Klasse TObject instantiiert wurde, also wie oft es das Objeckt "TObject" gibt, so kann dir standard delphi das nicht sagen. Den create bzw destroy prozess müsstest du mitprotokollieren in zb einer eigenen abgeleteteten TMyObject Klasse.

Es gibt aber einige Klassen, welche per definition weintere Klassen verwalten und so etwas bereits mitbringen. das Property "Components" z.b TForm ist hier ein Beispiel.
[...]

Liest hier eigentlich niemand (fast niemand) die Beiträge eines Threads, bevor er antwortet? Ansonsten kann ich mir das permanente Wiederholen bereits getätigter Aussagen nicht erklären...

Zurück zum Thema<<<
Zitat:

Zitat von Luckie
Rekursion ist hier das Stichwort.

Für Rekursion benötigt er aber etwas, woran er sich festhalten kann. Und das muss die Klasse können, wie bereits in Beitrag #2 erläutert. Oder meintest Du das Luckie?

Bomberbb 27. Sep 2007 09:59

Re: über Objekte einer Klasse iterieren
 
@peschai:

Das wird nicht funktionieren, da Self kein Zeiger ist.

Luckie 27. Sep 2007 10:04

Re: über Objekte einer Klasse iterieren
 
Nun ja, wen er eine Komponente gefunden hatm, ruft er ComponentCount usw. für die gefundene Komponente auf und so weiter. Eben genauso wie man durch das Dateisystem iteriert mit Rekursion.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:19 Uhr.
Seite 1 von 3  1 23      

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