Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Über Eigenschaften einer Kindklasse iterieren (https://www.delphipraxis.net/155215-ueber-eigenschaften-einer-kindklasse-iterieren.html)

Codehunter 13. Okt 2010 10:21

Über Eigenschaften einer Kindklasse iterieren
 
Hallo!

Ist es möglich, über Eigenschaften einer abgeleiteten Klasse zu iterieren, dabei festzustellen ob eine Eigenschaft eine Variable eines bestimmten Typs ist und diese Variable dann einer lokalen Prozedurvariable zuzuweisen? Hier ein Phantasie-Beispiel:

Code:
TRecordTyp = record
  Daten: String;
  Nummer: Integer;
end;

TElternKlasse = class
protected
  procedure Iterieren;
end;

TKindKlasse = class(TElternKlasse)
private
  FRecord1: TRecordTyp;
  FRecord2: TRecordTyp;
public
  property Record1: TRecordTyp read FRecord1 write FRecord1;
  property Record1: TRecordTyp read FRecord1 write FRecord1;
end;

procedure TElternKlasse.Iterieren;
var
  I: Integer;
  TR: TRecordTyp;
begin
  for I:= 0 to Self.PropertyCount - 1 do begin
    if Self.Properties[I] is TRecordTyp then begin
      TR:= TRecordTyp(Self.Properties[I]);
      with TR do begin
        // ..
      end;
    end;
  end;
end;
Das Ganze ist wirklich nur ein Phantasiegebilde. Ziel ist, in der Elternklasse oder irgendeiner anderen Prozedur über die Eigenschaften der Kindklasse zu iterieren. In meinem Fall gibt es einen ganzen Berg von Nachfahren, die alle unterschiedlich benannte Eigenschaften des selben Record-Typs besitzen. Die müsste ich finden (ohne die genaue Deklaration der Nachfahrklasse zu kennen) und damit arbeiten können.

Ist sowas überhaupt möglich?

Sir Rufo 13. Okt 2010 10:24

AW: Über Eigenschaften einer Kindklasse iterieren
 
Das Stichwort lautet RTTI, bei Delphi 5 ist es aber soweit ich weiß Essig

Codehunter 13. Okt 2010 10:37

AW: Über Eigenschaften einer Kindklasse iterieren
 
Ok danke, da hab ich ja zumindest einen Einstieg.

stahli 13. Okt 2010 10:38

AW: Über Eigenschaften einer Kindklasse iterieren
 
Such mal im Forum nach "PropertyByName" ... Die Funktion gibt es zwar originär so nicht, führt aber in die richtige Richtung (Unit TypInfo). (Ab welcher Delphiversion weiß ich aber nicht.)
Die Eigenschaften müssen aber published sein. Für public-Eigenschaften ging das leider nicht - hätte ich Bedarf gehabt ... :(

Ab D2010 gibt es deutlich bessere Möglichkeiten. Dazu gab es ein Video von Daniel.


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