На нашем сайте ежедневно публикуются десятки качественных и свежих материалов, которые Вы можете скачать абсолютно бесплатно. Рекомендуем Вам добавить Наш сайт в закладки, а также подписаться на RSS ленту, чтобы не пропускать интересных новостей.
Пора узнать о работе с файлами типа ini. Ини файлы делятся на секции, ключи, значения. Секции хранят в себе ключи, ключи в себе значения. В них можно хранить какие угодно значения, но в основном их используют для хранения настроек программы. Вот пример открытого ини файла: [Form1] // секция Width=640 // ключ=значение Height=480 // ключ=значение Left=250 // ключ=значение Top=350 // ключ=значение Для работы с ини обязательно понадобиться добавить в раздел uses модуль IniFiles и создать переменную типа TIniFile. Желательно сделать так: var Form1: TForm1; Ini:TIniFile; Ну вот, теперь на создание формы(событие onCreate) необходимо инициализировать переменную(создать файл, либо же открыть, если он существует):
Код
procedure TForm1.FormCreate(Sender:TObject); begin Ini:=TIniFile.Create('Form1.ini'); end;[/colde] Если написать имя файла без полного пути, то получится, что он создастся в папке Windows, а нам навряд ли это нам надо. Для этого надо сделать так: Ini:=TIniFile.Create(ExtractFilePath(Application.ExeName)+'Form1.ini'); Это создаст ини файл рядом с нашей программой. Процедура записи строки: WriteString(const Section, Ident, Value: string); Процедура записи цифры: WriteInteger(const Section, Ident: string; Value: Longint); Процедура записи булевого выражения: WriteBool(const Section, Ident: string; Value: Boolean); Запись даты: WriteDate(const Section, Name: string; Value: TDateTime); Запись время: WriteTime(const Section, Name: string; Value: TDateTime); Запись даты и время вместе: WriteDateTime(const Section, Name: string; Value: TDateTime); Запись не целого численного значения: WriteFloat(const Section, Name: string; Value: Double); Запись потока: WriteBinaryStream(const Section, Name: string;Value: TStream); Это основные процедуры записи, так же есть и чтения: ReadString(const Section, Ident, Default: string): string; ReadInteger(const Section, Ident: string; Default: Longint): Longint; ReadBool(const Section, Ident: string; Default: Boolean): Boolean; ReadBinaryStream(const Section, Name: string; Value: TStream): Integer; ReadDate(const Section, Name: string; Default: TDateTime): TDateTime; ReadDateTime(const Section, Name: string; Default: TDateTime): TDateTime; ReadFloat(const Section, Name: string; Default: Double): Double; ReadTime(const Section, Name: string; Default: TDateTime): TDateTime; Другие процедуры и функции для работы с ини-файлами: Проверка, существует ли секция: function SectionExists(const Section: string): Boolean; Прочтение всей секции: procedure ReadSection(const Section: string; Strings: TStrings); Прочтение всего файла (все секции записываются в Strings): procedure ReadSections(Strings: TStrings); Прочтение всех значений в заданной секции: procedure ReadSectionValues(const Section: string; Strings: TStrings); Удалить заданную секцию со всеми её значениями: procedure EraseSection(const Section: string); Удаление определённого ключа (и его значения) в секции: procedure DeleteKey(const Section, Ident: String); Проверка, существует ли заданный ключ в указанной секции: function ValueExists(const Section, Ident: string): Boolean; Теперь вы знакомы с основными процедурами чтения и записи, теперь перейдём к простеньким примерам. Для начала создадим событие onDestroy на нашей форме и применим следующий код(переменную Ini мы объявляли, как глобальную: [code]procedure TForm1.FormDestroy(Sender: TObject); begin Ini.WriteInteger('Size','Width',form1.width); // секция size, ключ width, значение form1.width Ini.WriteInteger('Size','Height',form1.height); // секция size, ключ height, значение form1.height Ini.WriteInteger('Position','X',form1.left); // секция position, ключ x, значение form1.left Ini.WriteInteger('Position','Y',form1.top); // секция position, ключ y, значение form1.top Ini.Free; end;
Итак, на разрушение(закрытие) формы мы записываем значения нашей формы. Теперь создадите кнопку(Button1, вкладка Standart). А на неё событие onClick(двойной клик по кнопке на форме) и следующий код:
Код
procedure TForm1.Button1Click(Sender: TObject); begin Form1.Width:=Ini.ReadInteger('Size','Width',100); Form1.Height:=Ini.ReadInteger('Size','Height',100); Form1.Left:=Ini.ReadInteger('Position','X',10); Form1.Top:=Ini.WriteInteger('Position','Y',10); end;
Теперь наша программа при выключении запоминает позиции и размеры формы, а при клике на кнопку их восстанавливает. Не обязательно при клике на кнопку, можно, например, это было сделать на создание формы и т.д.