Урок 67 - INI файлы
INI файлы - это удобный способ хранения настроек программы, ini файлы представляют собой простые текстовые файлы доступных для редактирования.
Мы напишем пример, программа будет запоминать размеры и положения формы и восстанавливать их при запуске.
Для начала добавим в секцию uses модуль IniFiles, и создадим глобальную переменную Settings: TINIFile;
В FormCreate напишем код:
procedure TForm1.FormCreate(Sender: TObject); begin Settings:= TIniFile.Create(GetCurrentDir + '\config.ini'); // Создаем ini файл Form1.Top:= Settings.ReadInteger('Form', 'Top', 200); // Читаем свойство Top Form1.Left:= Settings.ReadInteger('Form', 'Left', 200); // Читаем свойство Left Form1.Width:= Settings.ReadInteger('Form', 'Width', 200); // Читаем свойство Width Form1.Height:= Settings.ReadInteger('Form', 'Height', 200); // Читаем свойство Height end;
Если ничегго не указать в TIniFile.Create то файл создастся в C:\Windows\.
Разберём функцию: ReadInteger(const Section, Ident: string; Default: Longint): Longint;
- Section - Имя секции с параметрами
- Ident - Имя параметра
- Default - Стандартное значение если параметр не был найден
Как видите при компиляции ничего не появилось, а просто форма изменила свои габариты, чтобы появился файл с настройками надо их записать.
В обработчике OnClose Form1 пишем код:
procedure TForm1.FormCreate(Sender: TObject); begin Settings.WriteInteger('Form', 'Top', Form1.Top); //Записываем свойство Top Settings.WriteInteger('Form', 'Left', Form1.Left); //Записываем свойство Left Settings.WriteInteger('Form', 'Width', Form1.Width); //Записываем свойство Width Settings.WriteInteger('Form', 'Height', Form1.Height); //Записываем свойство Height end;
При закрытии параметры буду сохранятся. Попробуйте по растягивайте форму, по перемещайте ее и закройте, затем откройте и все сохранится.
Удачи!
Встретимся в следующем уроке!
Добавил(а): RinDproramer | Дата: 2013-07-30 | |
Ini файлы мне очень помогли, благодаря им, можно делать сохранения своей игры.
|
Добавил(а): RinDproramer | Дата: 2013-07-31 | |
Можно дополнить тем, что после *Read* и *Write* может идти не только Integer, а любой тип переменной. Например: WriteString,
ReadReal.
|
No results found.