ex5.pp 1016 B

123456789101112131415161718192021222324252627282930313233343536
  1. program example3;
  2. {$mode objfpc}
  3. uses rttiobj,typinfo;
  4. Var
  5. O : TMyTestObject;
  6. PI : PPropInfo;
  7. NO1,NO2 : TNamedObject;
  8. begin
  9. O:=TMyTestObject.Create;
  10. NO1:=TNamedObject.Create;
  11. NO1.ObjectName:='First named object';
  12. NO2:=TNamedObject.Create;
  13. NO2.ObjectName:='Second named object';
  14. O.ObjField:=NO1;
  15. Writeln('Object property : ');
  16. PI:=GetPropInfo(O,'ObjField');
  17. Write('Property class : ');
  18. Writeln(GetObjectPropClass(O,'ObjField').ClassName);
  19. Write('Value : ');
  20. Writeln((O.ObjField as TNamedObject).ObjectName);
  21. Write('Get (name) : ');
  22. Writeln((GetObjectProp(O,'ObjField') As TNamedObject).ObjectName);
  23. Write('Get (propinfo) : ');
  24. Writeln((GetObjectProp(O,PI,TObject) as TNamedObject).ObjectName);
  25. SetObjectProp(O,'ObjField',NO2);
  26. Write('Set (name,NO2) : ');
  27. Writeln((O.ObjField as TNamedObject).ObjectName);
  28. SetObjectProp(O,PI,NO1);
  29. Write('Set (propinfo,NO1) : ');
  30. Writeln((O.ObjField as TNamedObject).ObjectName);
  31. O.Free;
  32. end.