GetSetProp
Return the value of a set property.
Declaration
Source position: typinfo.pp line 899
function GetSetProp(Instance: TObject; const PropName: string) : string;
function GetSetProp(Instance: TObject; const PropName: string;
Brackets: Boolean) : string;
function GetSetProp(Instance: TObject; const PropInfo: PPropInfo;
Brackets: Boolean) : string;
Description
GetSetProp returns the contents of a set property as a string. The property to be returned can be specified by it's name in PropName or by its property information in PropInfo.
The returned set is a string representation of the elements in the set as returned by SetToString . The Brackets option can be used to enclose the string representation in square brackets.
Errors
No checking is done whether Instance is non-nil, or whether PropInfo describes a valid ordinal property of Instance Specifying an invalid property name in PropName will result in an EPropertyError exception.
See also
Name | Description |
---|---|
GetFloatProp | Return value of floating point property |
GetInt64Prop | return value of an Int64 property |
GetMethodProp | Return value of a method property |
GetStrProp | Return the value of a string property. |
SetSetProp | Set value of set-typed property. |
Example
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) : ',Byte(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',Byte(S));
Write('Set (name,[mefirst,methird]) : ');
Writeln(SetAsString(O.SetField));
S:=[meSecond];
SetOrdProp(O,PI,Byte(S));
Write('Set (propinfo,[meSecond]) : ');
Writeln(SetAsString(O.SetField));
O.Free;
end.