Работа с ini файлами в Delphi

Вторник, 26 июля 2011 г.
Рубрика: Архив Itword.net (2007-10)
Метки:
Просмотров: 21553
Подписаться на комментарии по RSS

На разных этапах создания проекта у вас может возникнуть потребность сохранить пользовательские настройки на диск. Лучше всего для этого подойдут INI файлы.

Работать с ними намного удобнее, нежели с обычными текстовыми файлами. Представьте ситуацию, вы написали крупный проект, который имеет огромное число настроек, например 100 штук (причем это не простые чекбоксы). Теперь представьте, что пользователь изменит один из параметров. Вам придется заново переписывать все 100 настроек в файл. Это очень утомительно. Благо есть способ более элегантный. Для хранения настроек и прочих подобных данных лучше всего подходят INI файлы или реестр. С реестром мы разберемся в следующий раз. Изучим работу с INI файлами. Одно из главных преимуществ INI файлов заключается в том, что эти файлы поддерживают переменные разных типов (String, Integer, Boolean). Также несравненным плюсом является возможность доступа к определенной записи, без изменения остальных. Думаю, что пора закончить введение и перейти к практике. Прежде всего нам надо создать новое приложение. Добавьте в секцию uses модуль inifiles. Давайте сохраним какие-нибудь настройки в INI файле.

Сохраним, к примеру, координаты положения формы при ее закрытии. Первым делом нужно создать сам INI файл с помощью метода Create(Filename:string) переменная Filename содержит полный путь к INI файлу, если этот параметр явно не задан, то INI файл будет создан в папке Windows. Мы будем хранить INI файл в той же папке, что и запущенное приложение. Давайте напишем обработчик события OnClose для нашей формы:procedure TForm1.FormDestroy(Sender: TObject); var Ini: Tinifile;
// создаем переменную типа Tinifile begin
//создали INI файл в директории программы Ini:=TiniFile.Create(extractfilepath(Application.ExeName)+\'Ini.ini\'); Ini.WriteInteger(\'Position\',\'X\',form1.left); Ini.WriteInteger(\'Position\',\'Y\',form1.top); Ini.Free; end;

Откройте созданный INI файл в текстовом редакторе и убедитесь, что настройки успешно сохранились, напомню, что мы создали INI файл в том же каталоге, что и приложение. [Position] X=14 Y=427 Давайте подробно разберем строку Ini.WriteInteger(\'Position\',\'Y\',form1.top).

Этот оператор делает запись типа Integer (кроме нее существует еще два оператора WriteString и WriteBool, которые записывают данные типа String и Boolean соответственно). Всем трем типам операторов передается три параметра: название секции, название поля и его значение, причем тип значения должен соответствовать типу оператора. Общий вид процедуры таков:Ini.WriteInteger(const Section: string, const Ident:string, Value: Integer); В INI файлах все поля расположены в секциях, это очень удобно и позволяет сохранять разные значения, разделяя их по категориям. Названия секций заключены в квадратных скобках. Если вы смотрели INI файл, то наверное уже все поняли. Оператор Ini.Free необходим для завершения работы с INI файлом и для освобождения памяти, не забывайте его. Теперь давайте научимся читать данные из INI файла. Для этого напишем обработчик события OnCreate для нашей формы. procedure TForm1.FormCreate(Sender: TObject); var Ini: Tinifile; begin //открываем файл Ini:=TiniFile.Create(extractfilepath(Application.ExeName)+\'Ini.ini\'); Form1.Left:=Ini.ReadInteger(\'Position\',\'X\',10); Form1.Top:=Ini.ReadInteger(\'Position\',\'Y\',10); Ini.Free; end; Здесь все очень просто. Для чтения данных мы воспользовались оператором INI.ReadInteger. Этот оператор как две капли воды похож на оператор записи. Как вы уже наверное догадались, операторов чтения тоже три и зависят они также от типа значений. Параметры оператора точно такие же как и параметры оператора записи. Отличается лишь третий параметр, он необходим только в том случае, если произошла какая-либо ошибка или нужной строки не удалось найти. Как видите хранить настройки в INI файлах очень удобно и очень просто.

twitter.com facebook.com vkontakte.ru odnoklassniki.ru mail.ru pikabu.ru blogger.com liveinternet.ru google.com

Оставьте комментарий!

grin LOL cheese smile wink smirk rolleyes confused surprised big surprise tongue laugh tongue rolleye tongue wink raspberry blank stare long face ohh grrr gulp oh oh downer red face sick shut eye hmmm mad angry zipper kiss shock cool smile cool smirk cool grin cool hmm cool mad cool cheese vampire snake excaim question

Используйте нормальные имена. Ваш комментарий будет опубликован после проверки.

Имя и сайт используются только при регистрации

Если вы уже зарегистрированы как комментатор или хотите зарегистрироваться, укажите пароль и свой действующий email. При регистрации на указанный адрес придет письмо с кодом активации и ссылкой на ваш персональный аккаунт, где вы сможете изменить свои данные, включая адрес сайта, ник, описание, контакты и т.д., а также подписку на новые комментарии.

(обязательно)