AGB  ·  Datenschutz  ·  Impressum  







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

RTTI und generische Listen

Ein Thema von hschmid67 · begonnen am 6. Nov 2020 · letzter Beitrag vom 6. Nov 2020
Antwort Antwort
hschmid67

Registriert seit: 2. Jul 2012
Ort: Weilheim i. Obb.
75 Beiträge
 
Delphi 12 Athens
 
#1

AW: RTTI und generische Listen

  Alt 6. Nov 2020, 14:28
Nun habe ich doch noch eine Lösung für mein Problem gefunden.

Der Schlüssel dazu ist, dass man die Typenüberprüfung von Delphi ausschalten muss, da sonst ja ein TObject nicht einem Property vom Typ TSubClass zugewiesen werden kann. (nur anders herum und das hilft hier nicht weiter - und ok, die Typensicherheit ist ein großer Vorteil von Delphi, aber an dieser Stelle, wüsste ich damit nicht weiter)

Um die Tpyenüberprüfung "quasi auszuschalten" kann man den Umweg über TValue nehmen. Pseudocode sähe dann in etwa so aus:

Value := CreateObjectByClassname(QualifiedClassname);

Dabei kann dann im TValue jedes Objekt gespeichert werden.

Um das dann einem Objektproperty zuweisen zu können, braucht man eine Funktion

SetPropertyValue(Object, PropertyName, Value);


Und wenn man vorher sichergeht, dass der QualifiedClassname genau dem PropertyName entspricht, geht man wegen der Typsicherheit auch kein Risiko ein.

Wenn man dann noch eine TList<T> mit Werten füllen möchte, braucht man noch eine Methode

InvokeMethod(Liste, 'add', [Value.AsObject]);


Ich weiß nicht, ob meine Vereinfachung so jetzt wirklich verständlich ist. Ich habe doch einige Stunden daran herumgetüftelt - und vielleicht ist für mich jetzt alles klar, was aus diesen paar Zeilen nicht ganz klar wird. Jedenfalls wollte ich meine Lösung hier beschreiben, damit jemand, der vielleicht ein ähnliches Problem hat, auf die richtige Spur kommen kann - oder auch nochmal nachfrägt. Dann kann ich gerne noch ausführlicher werden, oder meine oben in PseudoCode gehaltenen Funktionen ausführen.

Viele Grüße
Harald
Harald Schmid
  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 05:03 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