Здесь будут выкладыватья описания различных компонентов, методов и уловок, облегчающих написание программ, делающих это занятие более простым и удобным. Начнем с компонента, с которым я сейчас вплотную вожусь: TIniFile.
Те кто с ним знаком, могут дальше не читать. В принципе те кто незнаком могут почитать help, где все описано подробнее. Мое описание дается исключительно для знакомства.
TIniFile загружает и извлекает специализированную информацию и установочные параметры из INI-файлов.
Если вам надо хранить где-то изменяемые данные, то это самый простой способ.
Вам не придется считывать txt-файл, искать в нем нужное наименование и выделять его значение. Все это сделано за вас.
Структура INI-файла.
Файл состоит из секций внутри которых расположены переменные и их значения. Все названия переменных и секций пишутся с новой строки. В Ini-файле должна быть хотя бы одна секция, для корректной работы.
Для наглядности приведу свой Ini-файл:
Code |
;файл может распологаться либо в папке с программой ;либо в папке Windows [OPTIONS] autoanaliz=0 newlist=0 lastedited= [LASTOPEN] 0=C:\Program Files\Borland\Delphi6\Projects\RTF\2\test\AK.rtf 1=C:\Program Files\Borland\Delphi6\Projects\RTF\2\test\alphabit2.rtf 2=C:\Program Files\Borland\Delphi6\Projects\RTF\2\test\alphabit.rtf 3=C:\Program Files\Borland\Delphi6\Projects\RTF\2\test\AK1.rtf |
Рассмотрим его составляющие:
Строки в начале которых стоят символы ";" - комментарии.
[OPTIONS] есть название секции.
autoanaliz=0
собственно само название переменой и ее значение. В моем случае 0 означает, что опция автоанализа не включена.
Работа с TIniFile
Приведу опять таки свой код с описанием:
Code |
var IniF : TIniFile; //объект begin try IniF := TIniFile.Create(path_to_ini); //создаем его, path_to_ini - полный путь + имя файла //записываем значение mnAutoAnaliz.Checked в булевскую переменную rsAutoAnaliz в секции rsOptions IniF.WriteBool(rsOptions, rsAutoAnaliz, mnAutoAnaliz.Checked); IniF.WriteBool(rsOptions, rsnewList, mnNewList.Checked); if RTFFile <> nil then begin //записываем строку IniF.WriteString(rsOptions, rsLastEdited, RTFFile.Document.FileName); actSubMenu.Execute; RTFFile.Destroy; end else IniF.WriteString(rsOptions, rsLastEdited, ''); finally //в конце обязательно освобождаем занятую память IniF.Free(); end; end; |
Хочу заметить что работа с TIniFile ведется исключительно через блоки try, чтобы отловить возможные ошибки (т.к. в этих файлах обычно содержится важная информация).
Конечно же из Ini-файла можно читать. Все процедуры имеют такие же названия только в начале стоит Read вместо Write.
Осталось добавить с какими типами он может работать:
Boolean
String
Integer
Float
Date
DateTime
Time,
а также BinaryStream, то есть извлечение информации в двоичном виде.
Если есть вопросы по TIniFile задавайте, т.к. с ним еще можно кое-что делать. Как-то: считать сразу всю секцию, проверить существует ли переменная или секция и т.д.
Могу добавить что также существует tRegIniFile для работы с системным реестром. Почти полностью схож с TIniFile.
Вот и все на сегодня. Вернее на завтра, т.к. уже за полночь =)
Всем удачного программинга
А мне еще описание курсовика делать. =)