IniFilesTMemIniFile (C++)

From RAD Studio Code Examples
Jump to: navigation, search

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