Er det mon den rigtige måde at gøre det på
Jeg har en klasse der hedder Settings.Runtime og i den ønsker jeg at sætte nogle properties som jeg indlæser fra en fil der kan variere fra sted til sted.Funktionen virker sådan set fint som den er, men jeg er i tvivl om det måske kan laves lidt smartere og mere korrekt.
procedure UpdateSoftwareProperties(aPropName: string; aValue: variant);
var
RttiType : TRttiType;
Context : TRttiContext;
PropInfo : TRttiProperty;
SetValue : TValue;
begin
if not Assigned(Settings.Runtime) then
Exit;
RttiType := Context.GetType(Settings.Runtime.ClassType);
if Assigned(RttiType) then
begin
for PropInfo in RttiType.GetProperties do
begin
if PropInfo.Name = aPropName then
begin
SetValue := TValue.Empty;
case PropInfo.PropertyType.TypeKind of
tkInteger, tkInt64
: SetValue := Integer(aValue);
tkLString, tkUString, tkString
: SetValue := String(aValue);
tkEnumeration : SetValue := Boolean(aValue);
end;
if not SetValue.IsEmpty then
PropInfo.SetValue(Settings.Runtime, SetValue);
end;
end;
end;
end;