AGB  ·  Datenschutz  ·  Impressum  







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

Generisches Array über RTTI abfragen

Ein Thema von TheFrog · begonnen am 23. Okt 2014 · letzter Beitrag vom 23. Okt 2014
Antwort Antwort
TheFrog

Registriert seit: 24. Mär 2009
145 Beiträge
 
Delphi 11 Alexandria
 
#1

Generisches Array über RTTI abfragen

  Alt 23. Okt 2014, 12:20
Delphi-Version: 5
Hallo!

Gibt es eine Möglichkeit, generische Arrays über die neue RTTI-Funktionaltiät abzufragen?

Bsp:

Delphi-Quellcode:
    property BoolArray: TArray<Boolean> read GetBoolArray write SetBoolArray;
    property IntArray: TArray<Integer> read GetIntArray write SetIntArray;
Ich würde gerne herauskriegen, wieviel Einträge das Array hat und wenn möglich, von welchem Typ die Einträge sind, damit ich diese dynamsich ermitteln kann.

Mein TValue liefert wie erwartet tkDynArray, jedoch komme ich dann nicht mehr weiter.

Vielen Dank, Hans.

Sorry, oben ist die falsche Delphi-Version angegeben (sollte XE3 heißen). Wie kann ich das korrigieren?
  Mit Zitat antworten Zitat
TheFrog

Registriert seit: 24. Mär 2009
145 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Generisches Array über RTTI abfragen

  Alt 23. Okt 2014, 15:32
Nochmals mit dem gleichen Problem:

Ist es vielleicht besser, die Liste als TList<> zu deklarieren?

Beispiel:

Delphi-Quellcode:
    property BoolArray: TList<Boolean> read GetBoolArray write SetBoolArray;
    property IntArray: TList<Integer> read GetIntArray write SetIntArray;
Hier erhalte ich tkClass als Type, aber auch dann komme ich nicht weiter.

Vielleicht weiß ja wer, wie ich damit die einzelnen Elemente ermitteln kann. Es handelt sich um simple Datentypen (Integer, Boolean).

Hans.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.442 Beiträge
 
Delphi 12 Athens
 
#3

AW: Generisches Array über RTTI abfragen

  Alt 23. Okt 2014, 15:49
Mir ist noch nicht ganz klar, wo und wie du hier die neue RTTI einsetzt. tkDynArray hört sich eher nach alter RTTI an.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
TheFrog

Registriert seit: 24. Mär 2009
145 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Generisches Array über RTTI abfragen

  Alt 23. Okt 2014, 16:03
Mit tkClass od. tkDynArray meine ich der Wert von TValue.Kind. Ich dachte immer TValue hat was mit der neuen RTTI zu tun?

Habe aber inzwischen eine Lösung gefunden, vielleicht geht es auch eleganter (bin offen für Vorschläge):

Delphi-Quellcode:
          
          var
            OptValue: TValue;
          


          // Boolean-Liste ausgeben
          if (OptValue.Kind = tkClass) and (OptValue.AsObject is TList<Boolean>) then
          begin
            BooleanList := OptValue.AsObject as TList<Boolean>;

            for i := 0 to BooleanList.Count - 1 do
              // do something
          end
Ist leider nicht komplett abstract, d.h. ich muss hier den gewünschten Objekt-Typ wissen, aber für meinen Bereich reicht dies aus.
  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 10:35 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