mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-05-16 17:22:31 +02:00
50 lines
1.1 KiB
ObjectPascal
50 lines
1.1 KiB
ObjectPascal
program example7;
|
|
|
|
{ This program demonstrates the GetSetProp function }
|
|
|
|
{$mode objfpc}
|
|
|
|
uses rttiobj,typinfo;
|
|
|
|
Var
|
|
O : TMyTestObject;
|
|
PI : PPropInfo;
|
|
|
|
Function SetAsString (ASet : TMyEnums) : String;
|
|
|
|
Var
|
|
i : TmyEnum;
|
|
|
|
begin
|
|
result:='';
|
|
For i:=mefirst to methird do
|
|
If i in ASet then
|
|
begin
|
|
If (Result<>'') then
|
|
Result:=Result+',';
|
|
Result:=Result+MyEnumNames[i];
|
|
end;
|
|
end;
|
|
|
|
Var
|
|
S : TMyEnums;
|
|
|
|
begin
|
|
O:=TMyTestObject.Create;
|
|
O.SetField:=[mefirst,meSecond,meThird];
|
|
Writeln('Set property : ');
|
|
Writeln('Value : ',SetAsString(O.SetField));
|
|
Writeln('Ord(Value) : ',Longint(O.SetField));
|
|
Writeln('Get (name) : ',GetSetProp(O,'SetField'));
|
|
PI:=GetPropInfo(O,'SetField');
|
|
Writeln('Get (propinfo) : ',GetSetProp(O,PI,false));
|
|
S:=[meFirst,meThird];
|
|
SetOrdProp(O,'SetField',Integer(S));
|
|
Write('Set (name,[mefirst,methird]) : ');
|
|
Writeln(SetAsString(O.SetField));
|
|
S:=[meSecond];
|
|
SetOrdProp(O,PI,Integer(S));
|
|
Write('Set (propinfo,[meSecond]) : ');
|
|
Writeln(SetAsString(O.SetField));
|
|
O.Free;
|
|
end. |