diff --git a/X2UtSettings.pas b/X2UtSettings.pas index d5304ca..3087033 100644 --- a/X2UtSettings.pas +++ b/X2UtSettings.pas @@ -206,16 +206,18 @@ begin pDefine := FFactory.GetDefine(FSection, AName); if not InternalReadBool(AName, Result) then + begin if Assigned(pDefine) then Result := pDefine.Value else - raise EX2SettingsUndefined.CreateFmt(RSUndefined, [AName]); + raise EX2SettingsUndefined.CreateFmt(RSUndefined, [AName]) - if Assigned(pDefine) then - begin - vValue := Result; - pDefine.Action(saRead, FSection, AName, vValue); - Result := vValue; + if Assigned(pDefine) then + begin + vValue := Result; + pDefine.Action(saRead, FSection, AName, vValue); + Result := vValue; + end; end; end; diff --git a/X2UtSettingsRegistry.pas b/X2UtSettingsRegistry.pas index 3e24562..2dd4a24 100644 --- a/X2UtSettingsRegistry.pas +++ b/X2UtSettingsRegistry.pas @@ -53,7 +53,7 @@ type procedure DeleteValue(const AName: String); override; public constructor CreateInit(const AFactory: TX2SettingsFactory; - const ASection: String; + const AKey, ASection: String; const ARoot: Cardinal); destructor Destroy(); override; end; @@ -86,7 +86,7 @@ uses ========================================} function TX2RegistrySettingsFactory.GetSection; begin - Result := TX2RegistrySettings.CreateInit(Self, ASection, FRoot); + Result := TX2RegistrySettings.CreateInit(Self, FKey, ASection, FRoot); end; @@ -100,7 +100,7 @@ begin FData := TRegistry.Create(); FData.RootKey := ARoot; - FKey := IncludeTrailingPathDelimiter(FKey) + + FKey := IncludeTrailingPathDelimiter(AKey) + StringReplace(ASection, '.', '\', [rfReplaceAll]); end;