Я знаю, как писать на свойство перечислений в виде строки:Использование RTTI для чтения и записи перечисленное свойство, как Integer
var Form: TForm; LContext: TRttiContext; LType: TRttiType; LProperty: TRttiProperty; PropTypeInfo: PTypeInfo; Value: TValue; begin Form := TForm.Create(NIL); LContext := TRttiContext.Create; LType := LContext.GetType(Form.ClassType); for LProperty in LType.GetProperties do if LProperty.Name = 'FormStyle' then begin PropTypeInfo := LProperty.PropertyType.Handle; TValue.Make(GetEnumValue(PropTypeInfo, 'fsStayOnTop'), PropTypeInfo, Value); LProperty.SetValue(Form, Value); end; writeln(Integer(Form.FormStyle)); // = 3
но как установить значение, если у меня нет строки но integer (например, 3 для fsStayOnTop) и как читать из этого свойства, но не возвращать строку (которая будет работать с Value.AsString)?
Value := LProperty.GetValue(Obj); writeln(Value.AsString); // returns fsStayOnTop but I want not a string, I want an integer writeln(Value.AsInteger); // fails
спасибо. прекрасно работает. – cydo