Практически любое программное обеспечение способно запоминать (сохранять) настройки установленные пользователем. К примеру, внешний вид окна, язык и мн. др. Для сохранения настроек приложения есть несколько способов:
1. Реестр — все настройки и установки программы хранятся в системном реестре Windows.
2. INI файлы — настройки сохраняются в файл с расширением .ini
3. Создание файла с собственной структурой и способом хранения настроек.
Первый способ требует установки приложения, а именно создания новых веток и ключей в реестре. Этот способ подходит больше для крупных программных продуктов, либо программ в которых необходима связь с реестром. В простых (а иногда и сложных) программах проще всего использовать INI (Initialization file) файлы. Ниже будет рассмотрен принцип работы с INI, используя средства языка Delphi.
Структура INI файлов
INI файлы в системе Windows выглядят следующим образом:
или
т.е. фактически это текстовый (txt) документ и легко редактируется приложением блокнот. Структура INI файла так же проста, она имеет категорию(секцию), которая указывается в квадратных скобках ([menu]) и значения(идентификатор) Value = 256, где Value имя некоторого параметра в программе, например ширина окна, а 256-собственно значение этого параметра. Общий вид структуры выглядит так:
[menu]
f.heigth = 1440
f.width = 900
[language]
default = russian
Ну все. Достаточно теории. приступим к практике.
Создайте форму со следующими компонентами: две кнопки Button, Edit(Вкладка Standard), SpinEdit(вкладка Samples) и checkbox (вкладка Standard). Примерный вид формы такой:
Нам необходимо по нажатию кнопки «Сохранить в INI» сохранить в example.ini (распологается в папке с программой) текстовое значение Edit, числовое значение Spin и логическое значение checkbox. При нажатии кнопки «Считать INI«, соответственно прочитать эти значения.
Структура файла example.ini следующая:
[TEST]
EditVal =
SpinVal =
CheckboxVal =
[FormPosition]
fTop=
fLeft=
В разделе TEST мы храним все вышеперечисленные значения, а раздел FormPosition будет хранить позицию формы на экране.
Приступим к реализации.
Для работы с INI в Delphi имеется стандартная библиотека inifiles. Пропишем ее в uses.
Нам понадобятся две переменные pathINI (будет хранить путь к файлу example.ini) и sIniFile типа TIniFile. Эти переменные должны быть общими для всех процедур в модуле, поэтому их необходимо прописать в разделе var перед implementation
При загрузке нашего приложения, переменная pathINI должна получить полный путь к файлу ini. Для того чтоб произошли какие либо действия при загрузке формы, у объекта Form есть событие OnCreate. Кликните два раза по свободному месту на форме, после чего в редакторе кода появится процедура TForm1.FormCreate , добавьте в нее следующую строчку:
pathINI:=extractfilepath(application.ExeName)+’\example.ini’; |
Код для кнопок будет следующим:
procedure TForm1.Button1Click(Sender: TObject); // запись в INI строки // запись в INI целого числа // запись в INI логического значения boolean //запись значений позиции формы procedure TForm1.Button2Click(Sender: TObject); if FileExists(pathINI) then //проверяем есть ли файл INI end; |
Код не сложный, но при чтении значений из INI файла, есть один параметр (третий после указания секции и идентификатора), этот параметр будет присвоен в случае если идентификатор не будет найден т.е. значение по умолчанию. В таблице ниже приведен полный список функций записи и чтения в INI файл:
Функции записи |
Описание |
Функции чтения |
Описание |
WriteInteger |
Запись целочисленного значения |
ReadInteger |
Чтение целочисленного значения |
WriteString |
Запись текстового значения |
ReadString |
Чтение текстового значения |
WriteBool |
Запись логического значения |
ReadBool |
Чтение логического значения |
WriteDate |
Запись значения типа дата |
ReadDate |
Чтение значения типа дата |
WriteBinaryStream |
Запись двоичного значения |
ReadBinaryStream |
Чтение двоичного значения |
WriteDateTime |
Запись даты и времени |
ReadDateTime |
Чтение даты и времени |
WriteFloat |
Запись вещественного числа |
ReadFloat |
Чтение вещественного числа |
WriteTime |
Запись времени |
ReadTime |
Чтение времени |
С помощью INI файлов можно сделать, к примеру, мультиязычное приложение, т.е. хранить в разных файлах INI наименование кнопок, меню на различных языках. Но это тема уже другой статьи. А пока все. Ниже Вы можете загрузить полный исходный код рассмотренного примера, а так же рабочее приложение.
Прикрепленный файл: INI in Delphi.zip