IniFilesTMemIniFile (C++)

From RAD Studio Code Examples
Jump to: navigation, search

Language:

Description

This example demonstrates the usage of Ini files in order to store and load form configuration between sessions. Example requires that a RadioGroup and two buttons are present on the main form.

Code

void __fastcall TForm2::btStoreClick(TObject *Sender)
{
        /* Open an instance. */
        TCustomIniFile* SettingsFile = OpenIniFileInstance();
 
        // Store current form properties to be used in later sessions.
        try
        {
                SettingsFile->WriteInteger (Name, "Top", Top);
                SettingsFile->WriteInteger (Name, "Left", Left);
                SettingsFile->WriteInteger (Name, "Width", Width);
                SettingsFile->WriteInteger (Name, "Height", Height);
                SettingsFile->WriteString  (Name, "Caption", Caption);
                SettingsFile->WriteBool    (Name, "InitMax", WindowState == wsMaximized );
        }
        catch(Exception* e)
        {
        }
 
        delete SettingsFile;
}
 
void __fastcall TForm2::btLoadClick(TObject *Sender)
{
        /* Open an instance. */
        TCustomIniFile* SettingsFile = OpenIniFileInstance();
 
        try
        {
                /*
                Read all saved values from the last session. The section name
                is the name of the form. Also, use the form's properties as defaults.
                */
                Top     = SettingsFile->ReadInteger(Name, "Top", Top );
                Left    = SettingsFile->ReadInteger(Name, "Left", Left );
                Width   = SettingsFile->ReadInteger(Name, "Width", Width );
                Height  = SettingsFile->ReadInteger(Name, "Height", Height );
                Caption = SettingsFile->ReadString (Name, "Caption", Caption);
 
                // Load last window state.
                if (SettingsFile->ReadBool(Name, "InitMax", WindowState == wsMaximized))
                        WindowState = wsMaximized;
                else
                        WindowState = wsNormal;
        }
        catch(Exception* e)
        {
        }
 
        delete SettingsFile;
}
 
TCustomIniFile* __fastcall TForm2::OpenIniFileInstance()
{
        /*
        Open/create a new INI file that has the same name as 
        your executable, only with the INI extension.
        */
 
        switch (RadioGroup1->ItemIndex)
        {
                case 0:
                        /* Registry mode selected: in HKEY_CURRENT_USER\Software\... */
                        return new TRegistryIniFile(String("Software\\") + Application->Title);
                case 1:
                        /* Ini file mode selected */
                        return new TIniFile(ChangeFileExt(Application->ExeName, ".INI"));
                case 2:
                        /* Memory based Ini file mode selected */
                        return new TMemIniFile(ChangeFileExt(Application->ExeName, ".INI"));
          }
}

Uses

Personal tools