INI-файлы: сохранение настроек программы
INI-файлы: сохранение настроек программы
INI-файлы: сохранение настроек программы Все начинающие (и не только) программисты сталкиваются с проблемой сохранения настройки программы: размеров и положения окон, состояние checkbox'ов и т.д. Есть несколько способов сохранения: реестр, ini-файлы. ИМХО наиболее удобным является использование ini-файлов. Вот основные преимущества использования ini-файлов перед реестром: Прежде всего в стабильности. В отличие от системного реестра, при сбоях в операционной системе с ini-файлом ничего не случается, если только он не находится в системном каталоге. Мобильность программного кода. Простота использования. Но есть и свои недостатки: Простота удаления. ini-файл, как и любой другой файл можно случайно удалить :) ini-файл никак не защищается. Все, что есть в ini-файле легко просмотреть и изменить в любом текстовом редакторе. Конечно, можно его закодировать, но об этом расскажу в другой статье. ini-файл представляет простой текстовый файл, который имеет такое содержание: [section1] ident1=value1 ident2=value2 [section2] ident1=value1 ident2=value2 [section3] ident1=value1 ident2=value2 Для работы с ini-файлами в borland delphi предусмотрен модуль inifiles. uses inifiles; ... var inifile: tinifile; begin inifile:=tinifile.create('имя файла'); ... inifile.free; end; Таким образом, чтоб использовать ini-файлы необходимо добавить в список используемых модулей модуль inifiles. Затем нужно описать переменную типа tinifile. Перед использованием ini-файла его надо создать tinifile.create('имя файла'), если данного файла не существует - он будет создан, а если такой файл существует, то он будет открыт для использования. Для записи данных используется следующий формат: inifile.writexxx(section,ident,value), где inifile - это переменная типа tinifile; xxx - это тип данных которые вы хотите сохранить: string, integer, float, bool, binarystream, datetime, date, time. section - название секции в файле, которая содержит ключи. ident - ключ для секции - он содержит значение. value - значения ключей. Например: inifile.writestring('form1','caption','form1'); Для того, чтобы считать записанные в файл данные используется следующий формат: var:=inifile.readxxx(section, ident, default), где var - переменная которой присваивается полученное значение; inifile - это переменная типа tinifile; xxx - это тип данных которые вы хотите считать: string, integer, float, bool, binarystream, datetime, date, time. section - название секции в файле, которая содержит ключи. ident - ключ для секции - он содержит значение. default - это значение, которое примет var, если данного ключа не обнаружено. Например: form1.caption:=inifile.readstring('form1','caption','hi!'); Это все, что необходимо знать, чтоб уметь пользоваться ini-файлами. Ну и на последок пример, который показывает как пользоваться ini-файлами: unit example; uses ... inifile; ... var inifile: tinifile; ... procedure tform.formcreate(sender: tobject); begin inifile:=tinifile.create('example.ini'); form.left:=inifile.readinteger('form','left',150); form.top:=inifile.readinteger('form','top',100); form.height:=inifile.readinteger('form','height',300); form.width:=inifile.readinteger('form','width',400); form.caption:=inifile.readstring('form','caption','example'); end; ... procedure tform.formclosequery(sender: tobject; var canclose: boolean); begin inifile.writeinteger('form','left',form.left); inifile.writeinteger('form','top',form.top); inifile.writeinteger('form','height',form.height); inifile.writeinteger('form','width',form.width); inifile.writestring('form','caption',form.caption); inifile.free; end; --