Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Klassen wiederfinden (https://www.delphipraxis.net/69061-klassen-wiederfinden.html)

Alexander Roth 9. Mai 2006 18:11


Klassen wiederfinden
 
Hi,

also, wenn man eine Komponente hat. z.B. ein Label dann kann man das mit
Delphi-Quellcode:
  with TLabel.Create(form1) do
  begin
    parent:=form1;
    name:='L1';
  end;
createn.

So das kann man dann hübsch mit FindComponent und dem name wiederfinden und ansprechen.

Wie bekommt man das ganz analog zu den Komonenten mit eigenen Klassen hin?
Denn
Delphi-Quellcode:
  Ta=class
    s:integer;
  end;
hat kein name.

Wie kann man das wiederfinden? Oder muss man das an Varablen ketten?

DGL-luke 9. Mai 2006 18:25

Re: Klassen wiederfinden
 
Die VCL hat das auch an Variablen gekettet. Die Komponenten sind nämlich alle in Form1.Controls drin.

Eine Klasse ist ein Speicherbereich, und dieser Speicherbereich ist durch den Klassenzeiger (Anfang des Speicherbereichs) und die Klassendeklaration (Größe der Klasse und Adresse der Felder) hinreichend beschrieben.

Du kannst natürlich jetzt sowas machen:

Delphi-Quellcode:
for i := 0 to Ende_des_adressbereiches do
  if TObject(i) is TMyClass then
    if TMyClass(i).name = 'gesuchter_name' then
      showmessage('gefunden');
Aber wir sollten uns ja wohl einig sein, dass das Quatsch ist.

shmia 9. Mai 2006 18:31

Re: Klassen wiederfinden
 
Üblicherweise speichert man die Objekte in Variablen.
Bei einer grösseren Menge von Objekten verwendet man TObjectList.
Man kann im Constructor festlegen, ob alle Objekte in der ObjectList am Ende automatisch gefree'd werden sollen.
Möchte man den Objekten einen Namen geben und diese in der Liste damit später wiederfinden,
dann macht man sich eine Ableitung von TObjectList.

Alexander Roth 9. Mai 2006 18:34

Re: Klassen wiederfinden
 
@shmia: Riesen Dank. Wusste garnicht gas es so was gibt. Schaue ich mir sofort an.

edit: @shmia: :thumb: Genau so was habe ich gesucht. :-D Riesen Dank.


Tschüss


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:31 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