AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

RTTI: Verschachtelte Klassen auslesen

Ein Thema von s.h.a.r.k · begonnen am 29. Aug 2011 · letzter Beitrag vom 29. Aug 2011
Antwort Antwort
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#1

AW: RTTI: Verschachtelte Klassen auslesen

  Alt 29. Aug 2011, 18:59
Ich weiß, ein schöner Test sieht anders aus, aber das gewünschte Ergebnis ist vorhanden
Delphi-Quellcode:
type
  TTest = class
  strict private type TStrict = class end;
  strict private _Strict : TStrict;

  private type TOne = class end;
  private One : TOne;

  protected type TTwo = class end;
  protected Two : TTwo;

  public type TThree = class end;
  public Three : TThree;

  public type
    TNested = class
    public type TNestedNested = class end;
    public Nested : TNestedNested;
    end;

  public Nested : TNested;
  end;

procedure TForm1.FormCreate(Sender: TObject);
var
  RC : TRttiContext;
  RT : TRttiType;
  T : TTest;
begin
  mmoLog.Clear();
  for RT in RC.GetTypes() do
    if (Pos(TTest.ClassName, RT.QualifiedName) > 0) then
      mmoLog.Lines.Add(RT.QualifiedName);

  T := TTest.Create();
  T.Free();
end;

// liefert:

Unit1.TTest.TStrict
Unit1.TTest.TOne
Unit1.TTest.TTwo
Unit1.TTest.TThree
Unit1.TTest.TNested.TNestedNested
Unit1.TTest.TNested
Unit1.TTest
Das Problem hierbei ist aber noch herauszufinden, welcher Teil von z.B. Unit1.TTest.TStrict ein Typ ist und welcher zur Unit gehört. Idee hierzu: den String nach und nach kürzen und via TRttiContext.FindType testen, ob der Typ gefunden wurde und ob dessen QualifiedName-Eigenschaft gleich dem übergebenen String-Parameter entspricht.
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
Antwort Antwort


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 23:43 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