Einzelnen Beitrag anzeigen

skydiablo

Registriert seit: 15. Mär 2004
Ort: Wismar
17 Beiträge
 
#1

D2010 RTTI besitzt ein object scope ?

  Alt 10. Jun 2010, 20:59
Delphi-Version: 2010
hi @ all...

ich bin derzeit am rumschrauben mit delphi 2010 und den neuen RTTI "klassen" (in anfürungszeichen, da mir das mit pseudo record als object getarnt bekannt ist)... nun meine eigentlich frage:

ich hab mir hier mal eine function gebaut die mir ein bestimmtes attribut auslesen soll:

Delphi-Quellcode:
function getAttribute(ctx : TRttiContext; obj : TObject; attributeClass : TClass) : TBasicAttribute;
var
// ctx: TRttiContext;
  t : TRttiType;
  p : TRttiProperty;
  a : TCustomAttribute;
begin
  result := nil;
// ctx := TRttiContext.Create;
  try
    t := ctx.GetType(obj.ClassType);
    for p in t.GetProperties do
      for a in p.GetAttributes do
        if a is attributeClass then
        begin
          result := a AS TBasicAttribute;
          exit;
        end;
  finally
// ctx.Free;
  end;
end;
in dieser schon etwas angepassten variante übergebe ich ein bereits bestehendes TRttiContext "object" mit. diese function gibt mir nun also ein TBasicAttribute bzw davon abgeleitetes attribut zurück. dieses object hat eine property, setze ich da nun ein value und rufe dann die function "getAttribute" wieder auf, hat das gleiche attribut vom gleichen object wieder den default wert ? gibt es denn keine möglichkeit attributen einen wert nachträglich zu setzen und dieses veränderten wert nachträglich wieder ab zu fragen ? es ist mir auch bewusst, dass hier die attribute auf die klasse bezieht und nicht auf das object selst, aber gibt es eine möglichkeit atribute an objecte zu binden ?

hoffe meine ausführung ist ansatzweise nachvollziehbar ? würde mich über eine antwort freuen...

greez & thx, sky...
  Mit Zitat antworten Zitat