void TConfiguration::DoSave(bool All, bool Explicit) { if (FDontSave) { return; } std::unique_ptr<THierarchicalStorage> Storage(CreateConfigStorage()); Storage->SetAccessMode(smReadWrite); Storage->SetExplicit(Explicit); if (Storage->OpenSubKey(GetConfigurationSubKey(), true)) { // if saving to TOptionsStorage, make sure we save everything so that // all configuration is properly transferred to the master storage bool ConfigAll = All || Storage->GetTemporary(); SaveData(Storage.get(), ConfigAll); } Saved(); if (All) { StoredSessions->Save(true, Explicit); } // clean up as last, so that if it fails (read only INI), the saving can proceed if (GetStorage() == stRegistry) { CleanupIniFile(); } }
//--------------------------------------------------------------------------- void TConfiguration::DoSave(bool All, bool Explicit) { if (FDontSave) { return; } std::unique_ptr<THierarchicalStorage> Storage(CreateStorage(false)); Storage->SetAccessMode(smReadWrite); Storage->SetExplicit(Explicit); if (Storage->OpenSubKey(GetConfigurationSubKey(), true)) { SaveData(Storage.get(), All); } Saved(); if (All) { StoredSessions->Save(true, Explicit); } // clean up as last, so that if it fails (read only INI), the saving can proceed if (GetStorage() == stRegistry) { CleanupIniFile(); } }
//--------------------------------------------------------------------------- void __fastcall TConfiguration::DoSave(bool All, bool Explicit) { if (FDontSave) return; THierarchicalStorage * AStorage = CreateScpStorage(false); try { AStorage->AccessMode = smReadWrite; AStorage->Explicit = Explicit; if (AStorage->OpenSubKey(ConfigurationSubKey, true)) { SaveData(AStorage, All); } } __finally { delete AStorage; } Saved(); if (All) { StoredSessions->Save(true, Explicit); } // clean up as last, so that if it fails (read only INI), the saving can proceed if (Storage == stRegistry) { CleanupIniFile(); } }