ex7.pp 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. program example7;
  2. { This program demonstrates the GetSetProp function }
  3. {$mode objfpc}
  4. uses rttiobj,typinfo;
  5. Var
  6. O : TMyTestObject;
  7. PI : PPropInfo;
  8. Function SetAsString (ASet : TMyEnums) : String;
  9. Var
  10. i : TmyEnum;
  11. begin
  12. result:='';
  13. For i:=mefirst to methird do
  14. If i in ASet then
  15. begin
  16. If (Result<>'') then
  17. Result:=Result+',';
  18. Result:=Result+MyEnumNames[i];
  19. end;
  20. end;
  21. Var
  22. S : TMyEnums;
  23. begin
  24. O:=TMyTestObject.Create;
  25. O.SetField:=[mefirst,meSecond,meThird];
  26. Writeln('Set property : ');
  27. Writeln('Value : ',SetAsString(O.SetField));
  28. Writeln('Ord(Value) : ',Longint(O.SetField));
  29. Writeln('Get (name) : ',GetSetProp(O,'SetField'));
  30. PI:=GetPropInfo(O,'SetField');
  31. Writeln('Get (propinfo) : ',GetSetProp(O,PI,false));
  32. S:=[meFirst,meThird];
  33. SetOrdProp(O,'SetField',Integer(S));
  34. Write('Set (name,[mefirst,methird]) : ');
  35. Writeln(SetAsString(O.SetField));
  36. S:=[meSecond];
  37. SetOrdProp(O,PI,Integer(S));
  38. Write('Set (propinfo,[meSecond]) : ');
  39. Writeln(SetAsString(O.SetField));
  40. O.Free;
  41. end.