Russian version
English version
ОБ АЛЬЯНСЕ | НАШИ УСЛУГИ | КАТАЛОГ РЕШЕНИЙ | ИНФОРМАЦИОННЫЙ ЦЕНТР | СТАНЬТЕ СПОНСОРАМИ SILICON TAIGA | ISDEF | КНИГИ И CD | ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ | УПРАВЛЕНИЕ КАЧЕСТВОМ | РОССИЙСКИЕ ТЕХНОЛОГИИ | НАНОТЕХНОЛОГИИ | ЮРИДИЧЕСКАЯ ПОДДЕРЖКА | АНАЛИТИКА | КАРТА САЙТА | КОНТАКТЫ
 
Программное обеспечение
 
Для зарегистрированных пользователей
 
РАССЫЛКИ НОВОСТЕЙ
IT-Новости
Новости компаний
Российские технологии
Новости ВПК
Нанотехнологии
 
Поиск по статьям
 
RSS-лента
Подписаться
Документация

Программирование в Delphi: Для чего нужны ini-файлы?

6. Для чего нужны ini-файлы?

Очень интересный вопрос был задан в заголовке этой статьи. Действительно, для чего же они нужны? Ответ не требует больших размышлений, кто в той или иной степени владеет техникой программирования в Delphi: для сохранения каких-либо настроек Вашей программы на жёсткий диск с последующим их изменениям. Приведу примеры использования этой не хитрой системы.

1. Сохранение размеров формы, название заголовка, местоположение окна на экране монитора, и другие настройки, связанные с формой (Очень часто у пользователя складывается образ "идеального окна", которое должно быть всегда одинаково расположенным и одинаковых размеров. Чтобы ему постоянно не приходилось настраивать это, можно постоянно автоматически делать все изменения в ini-файл).

2. Настройки программы (Будь то параллельное звучание музыки, или добавление программы в автозагрузку. Все единожды изменённые настройки сохраняются и при следующем запуске приложения считываются с ini-файла).

3. Мультиязычность (Да, на ini такое можно осуществить. В таком файле просто в значении какого-либо параметра будет перевод определённого слова. Если Вы делаете свой программный продукт и для зарубежных пользователей, то можно это осуществить путём ini-файла).

4. Регистрация программы (В программе Вы зашифровываете какое-либо значение, а затем свериваетесь со значением, хранящемся в файле, причём оно тоже зашифровывается. Это, конечно, не лучший способ защиты от несанкционированного использования вашего продукта, но всё служит одни из вариантов).

И т.д., ведь в ini-файл можно поместить любую информацию целого, символьного или булевского типа. Давайте теперь перейдём к реальной задаче, на примере который мы научимся пользоваться этой очень полезной штукой. Пусть автоматически сохраняться настройки:

  • Заголовок формы: Form1.Caption ;
  • Местоположение: Form1.Left и Form1.Top ;
  • Размеры формы: Form1.Width и Form1.Height .
Сохраните проект в какой-нибудь папке. Создайте в этой папке ещё один каталог и назовите его data. После этого скопируйте (или создайте) в него пустой файл vars.ini, в котором как раз и будут храниться все наши настройки. Следующий шаг коснётся уже самой программы. Добавьте в uses (модули) модуль для работы с ini-файлами: inifiles. Без него у нас ничего не выйдет.

Ну а теперь давайте подумаем: когда наши настройки будут сохраняться? Нужно сделать так, чтобы это не было заметно для пользователя - не стоит его загромождать лишними операциями. Верно! Сохранять все настройки следует после закрытии программы, когда человек ничего изменить больше не сможет. Открываем событие формы OnClose и записываем следующий код:

 procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var Vars: Tinifile;
begin
Vars:=TiniFile.Create(extractfilepath(paramstr(0))+'data/vars.ini');
Vars.WriteString('Form','Caption',Form1.Caption);
Vars.WriteInteger('Form','Left',Form1.Left);
Vars.WriteInteger('Form','Top',Form1.Top);
Vars.WriteInteger('Form','Width',Form1.Width);
Vars.WriteInteger('Form','Height',Form1.Height);
Vars.Free;
end; 
Попробую теперь объяснить этот код.

var Vars: Tinifile;
Мы объявили переменную Vars типа Tinifile, т.е. чтобы нам работать с ними, необходимо объявить переменную. И теперь для чтения и записи данных, всё происходит через обращение этой переменной.

Vars:=TiniFile.Create(extractfilepath(paramstr(0))+'data/vars.ini');
Если этого файла нет в каталоге, то он автоматически создастся, а если есть, то откроется.

Vars.WriteString('Form','Caption',Form1.Caption);
Записываем заголовок формы, причём, обратите внимание - командой WriteString(Дословно - записать текст).

Vars.WriteInteger('Form','Left',Form1.Left);
Записываем положение формы слева от экрана. Это величина целая - WriteInteger(Дословно - записать целое число).

...

Vars.Free;
Очищаем память.

Думаю здесь должно быть всё понятно. С этим разобрались. Теперь давайте попробуем сделать так, что после загрузки, приложение считывало сохранённые параметры и изменяло форму. Это реализовывает следующий код (Событие OnCreate):

 procedure TForm1.FormCreate(Sender: TObject);
var Vars: Tinifile;
begin
Vars:=TiniFile.Create(extractfilepath(paramstr(0))+'data/vars.ini');
Form1.Caption:=Vars.ReadString('Form','Caption','Название формы по-умолчанию');
Form1.Left:=Vars.ReadInteger('Form','Left',255);
Form1.Top:=Vars.ReadInteger('Form','Top',209);
Form1.Width:=Vars.ReadInteger('Form','Width',696);
Form1.Height:=Vars.ReadInteger('Form','Height',480);
Vars.Free;
end; 
Здесь аналогично, как и для записи в файл, только чтение - ничего нового практически нет. Следует только упомянуть третий параметр ReadInteger (ReadString). Это параметр по-умолчанию, т.е. если файл будет удалён (или не сможет быть прочитан), то форма в данном случае примет размеры и положение, какие были определены здесь. Попробуйте удалить файл vars.ini из папки data и увидете, что всё именно так.

И на последок хочу сказать, что работать с ini-файлами очень удобно. Открою небольшой секрет - почти все мои программы основаны именно на них. И ещё: один мой знакомый говорит, что реестр намного лучше в этих целях служит и что он предпочитает работать именно с реестром. Не знаю - кому как. Пока каждый не попробует, он не прочувствует всего преимущества каждого из вариантов. Преимущества реестра - простота и удобство. Ini-файлов - возможность переноса настроек на другие компьютеры, а так же простота в использовании. Экспериментируйте!


  Рекомендовать страницу   Обсудить материал Написать редактору  
  Распечатать страницу
 
  Дата публикации: 07.06.2006  

ОБ АЛЬЯНСЕ | НАШИ УСЛУГИ | КАТАЛОГ РЕШЕНИЙ | ИНФОРМАЦИОННЫЙ ЦЕНТР | СТАНЬТЕ СПОНСОРАМИ SILICON TAIGA | ISDEF | КНИГИ И CD | ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ | УПРАВЛЕНИЕ КАЧЕСТВОМ | РОССИЙСКИЕ ТЕХНОЛОГИИ | НАНОТЕХНОЛОГИИ | ЮРИДИЧЕСКАЯ ПОДДЕРЖКА | АНАЛИТИКА | КАРТА САЙТА | КОНТАКТЫ

Дизайн и поддержка: Silicon Taiga   Обратиться по техническим вопросам  
Rambler's Top100 Rambler's Top100