Einzelnen Beitrag anzeigen

Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#1

RTTI - Property - SetValue

  Alt 27. Dez 2010, 21:52
Ich versuche, RTTI unter XE zu verstehen und zu nutzen.

Ich habe eine Klasse TTest mit den Propertys S: String und I: Integer ;

Nun möchte ich mit SetString(T, 'S', 'Text') und analog SetInteger(T, 'I', 100) Werte zuweisen:

Delphi-Quellcode:
procedure SetString(T: TTest; PropName: String; Value: String);
var
  Context: TRttiContext;
  ClassInfo: TRttiType;
  PropInfo: TRttiProperty;
  PropValue: TValue;
begin
  if not Assigned(T) then
    Exit;

  Context := TRttiContext.Create;
  ClassInfo := Context.GetType(T.ClassType);
  PropInfo := ClassInfo.GetProperty(PropName);

  if Assigned(PropInfo) then
  begin

{
  so könnte man den Wert auslesen:
  PropValue := PropInfo.GetValue(T);
  if PropValue.Kind = tkString then
    Result := PropValue.AsString

  wie kann ich einen Wert schreiben???
  im Grunde brauche ich so etwas wie T.PropertyByName('PropName').AsString := Value
}


  end;
  context.Free;
end;

procedure SetInteger(T: TTest; PropName: String; Value: Integer);
...Variante mit Integer
Die Hilfe erscheint mir unvollständig, da dort doch keine Objekt-Instanz genutzt wird!?

Weiß jemand Rat?
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)

Geändert von stahli (27. Dez 2010 um 21:56 Uhr)
  Mit Zitat antworten Zitat