Delphi-PRAXiS
Seite 3 von 3     123   

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)

s-off 27. Sep 2007 11:59

Re: über Objekte einer Klasse iterieren
 
Zitat:

Zitat von peschai
@s-off:
Bitte weniger Vorwürfe was ein anderer falsch macht oder schreibt oder nicht liest und mehr konstruktive hilfe.
@

Wenn mir etwas nicht passt, dann sage ich das. Und ich möchte, dass das respektiert wird. Dieses Recht räume ich schliesslich auch jedem anderen mir gegenüber ein.
Wenn jemand mit meiner Kritik nicht umgehen kann, hat er mehrere Möglichkeiten:
  • Er ignoriert es
  • Er verwertet die Kritik; wie auch immer.
Über quantitative Aspekte mein Angebot an Hilfestellungen betreffend kannst Du Dich wohl kaum beschweren. In jedem meiner Beiträge innerhalb dieses Threads bin ich auch auf die Problemstellung eingegangen.
Die Tatsache, dass diese nicht zum gewünschten Erfolg geführt hat, können wir lt. Aussage des Threaderstellers unter 'Kommunikationsschwierigkeiten' verbuchen.

stahli 28. Sep 2007 13:33

Re: über Objekte einer Klasse iterieren
 
Hallo zusammen,

alle haben sich wieder lieb ;-)
(Alles Männer und doch versteht man sich nicht...)

Wenn man keine eigenen Komponenten sucht (die man bei Erzeugen extra registrieren kann), geht´s z.B. auch so (das war sicher mit der Rekursion gemeint):

Delphi-Quellcode:
procedure AlleXyzSuchen;

  procedure AlleXyzSuchen_(Comp:TComponent);
  var I:Integer;
      Temp:TComponent;
  begin
    with Comp do begin
      for I:=0 to ComponentCount-1 do begin
        Temp:=Components[I];
        if (Temp is TXyz) then begin
          (Temp as TXyz).MachWas;
        end
        else AlleXyzSuchen_(Temp);
        // wenn auch in TXyz selbst gesucht werden soll, else entfernen
      end;
    end;
  end;

begin
  AlleXyzSuchen_(Application);
end;
Stahli

Reinhard Kern 28. Sep 2007 15:03

Re: über Objekte einer Klasse iterieren
 
Zitat:

Zitat von Bomberbb
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...

Hallo,

dafür gibt es aber mehrere Lösungen:

a) ich rufe für jedes neue Objekt Create auf mit den Parametern Root und Parent - Root ist das Ausgangsobjekt (eines Baumes, hier könnte man auch Klassenvariable einsetzen), Parent eben das Vorgängerobjekt, deren Adressen werden im Objekt gespeichert. Dann rufe ich StartNewObject auf mit dem Ergebnis (also dem neuen Objekt) als Parameter, dort wird u.a. der Pointer Parent.Next gesetzt auf das neue Objekt.

b) man verkettet rückwärts - die Adresse von Parent ist ja bekannt und kann als self.Previous gespeichert werden.

Gruss Reinhard


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

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