Статьи Советы по Delphi Советы по работе с системой Советы для написания программ-инсталляторов Регистрация программ в меню "Пуск" Windows 95 Как программно создать ярлык? Затенить кнопку «Закрыть» в заголовке формы Копирование файлов Как скопировать все файлы вместе с подкаталогами Удаление каталога со всем содержимым Определение системной информации Как проинсталлировать свои шрифты? Вставить какую-нибудь программу внутрь EXE файла Как написать маленький инсталлятор? Рисую две иконки 32х32 и 16х16, но под NT 32х32 не показывается! Работа с принтером. Система Внешние модули (DLL), нити Советы по работе с реестром. Использование некоторых ключей реестра Работа с реестром в Delphi 1 Объект INIFILES - работа с INI файлами. Советы по работе с графикой Разное Глюки Создание редактора карт в стратегиях типа WarCraft Шпаргалка по ресурсам Windows-32 (для Delphi) Стандартная технология доступа к ресурсам Внутренний формат ресурсов Windows Описание формата ресурсов в MS PE COFF. Дамп памяти (взят из PE.TXT) API Программирование на основе Win32 API в Delphi 1. Введение 2. Существующие решения 3. Принципы построения API-библиотеки 4. Библиотека WinLite 5. Пример программы на основе библиотеки WinLite KOL Состояние проекта KOL FAQ Часто задаваемые вопросы по Borland Delphi Общие вопросы по Delphi и данному FAQ (часть 1) Введение Вопросы общего характера Совместимость Базы данных - Interbase и локальные данные Базы данных — прочие SQL сервера Общие вопросы по Delphi и данному FAQ (часть 2) Базы данных — компоненты и VCL. Компоненты и VCL Общие вопросы по Delphi и данному FAQ (часть 3) Object Pascal и Windows API Разное Полезные хитрости Вопросы по Delphi 1.0 Вопросы общего характера Delphi и Visual Basic Базы данных Object Pascal и Windows API Компоненты и VCL Разное Вопросы по Delphi 2.0 Что нового в Delphi 2.0 по сравнения с Delphi 1.0? Вопросы общего характера Базы данных Object Pascal и Windows API Разное Вопросы по Delphi 3.0 Вопросы общего характера Object Pascal и Windows API Delphi, С++ Builder и базы данных: вопросы и ответы Delphi VCL FAQ
Объект INIFILES - работа с INI файлами. Почему иногда лучше использовать INI-файлы, а не реестр?
1. INI-файлы можно просмотреть и отредактировать в обычном блокноте.
2. Если INI-файл хранить в папке с программой, то при переносе папки на другой компьютер настройки сохраняются. (Я еще не написал ни одной программы, которая бы не поместилась на одну дискету :)
3. Новичку в реестре можно запросто запутаться или (боже упаси), чего-нибудь не то изменить.
Поэтому для хранения параметров настройки программы удобно использовать стандартные INI файлы Windows. Работа с INI файлами ведется при помощи объекта TIniFiles модуля IniFiles. Краткое описание методов объекта TIniFiles дано ниже.
Constructor Create('d:\test.INI');
Создать экземпляр объекта и связать его с файлом. Если такого файла нет, то он создается, но только тогда, когда произведете в него запись информации.
WriteBool(const Section, Ident: string; Value: Boolean);
Присвоить элементу с именем Ident раздела Section значение типа boolean
WriteInteger(const Section, Ident: string; Value: Longint);
Присвоить элементу с именем Ident раздела Section значение типа Longint
WriteString(const Section, Ident, Value: string);
Присвоить элементу с именем Ident раздела Section значение типа String
ReadSection (const Section: string; Strings: TStrings);
Прочитать имена всех корректно описанных переменных раздела Section (некорректно описанные опускаются)
ReadSectionValues(const Section: string; Strings: TStrings);
Прочитать имена и значения всех корректно описанных переменных раздела Section. Формат :
имя_переменной = значение
EraseSection(const Section: string);
Удалить раздел Section со всем содержимым
ReadBool(const Section, Ident: string; Default: Boolean): Boolean;
Прочитать значение переменной типа Boolean раздела Section с именем Ident, и если его нет, то вместо него подставить значение Default.
ReadInteger(const Section, Ident: string; Default: Longint): Longint;
Прочитать значение переменной типа Longint раздела Section с именем Ident, и если его нет, то вместо него подставить значение Default.
ReadString(const Section, Ident, Default: string): string;
Прочитать значение переменной типа String раздела Section с именем Ident, и если его нет, то вместо него подставить значение Default.
Free;
Закрыть и освободить ресурс. Необходимо вызвать при завершении работы с INI файлом
Property Values[const Name: string]: string;
Доступ к существующему параметру по имени Name
Пример :
Procedure TForm1.FormClose(Sender: TObject);
var
IniFile:TIniFile;
begin
IniFile := TIniFile.Create('d:\test.INI'); { Создали экземпляр объекта }
IniFile.WriteBool('Options', 'Sound', True); { Секция Options: Sound:=true }
IniFile.WriteInteger('Options', 'Level', 3); { Секция Options: Level:=3 }
IniFile.WriteString('Options' , 'Secret password', Pass);
{ Секция Options: в Secret password записать значение переменной Pass }
IniFile.ReadSection('Options ', memo1.lines); { Читаем имена переменных}
IniFile.ReadSectionValues('Options ', memo2.lines); { Читаем имена и значения }
IniFile.Free; { Закрыли файл, уничтожили объект и освободили память }
end;