|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
20.02.2008, 22:25 | #1 |
Пользователь
Регистрация: 02.11.2007
Сообщений: 20
|
TIniFile
Здравствуйте! Мне надо заранее физически создать файл инициализации и внести туда определенные параметра для программы. Как это сделать, а самое главное, где он должен размещаться так, чтобы программа его находила? (В книге написано, что файл обычно располагается в C:\Windows, но мне хотелось бы это обойти и просто размещать файл в определенной директории). Спасибо за внимание
|
20.02.2008, 22:28 | #2 |
Android Developer
Старожил Подтвердите свой е-майл
Регистрация: 19.02.2007
Сообщений: 3,708
|
Непонятно кто Вам мешает его расположить хоть возле программы хоть на C:\ хоть на зю:\парам-пам-пам\опа\... *.ini простой текстовый файл с таким расширением... формат записи [Имя секции] потом идут Парметр=Значение... и так до бесконечности. Еще вопросы ?
|
20.02.2008, 23:17 | #3 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,065
|
параметры изначально можно не задавать. в чтении прописываешь параметры по умолчанию и если ключа не будет, то в файл запишется этот ключ со значением по умолчанию. во как)
|
21.02.2008, 00:14 | #4 |
Телепат с дипломом
Старожил
Регистрация: 10.06.2007
Сообщений: 4,929
|
Расшифрую то что сказал pu4koff
Файла может и не быть в директории с программой (обычно там ему и место) по разным причинам: или это первый запуск или пользователь его удалил. Но это не страшно, функции чтения параметров из INI файлов имеют параметр по умолчанию, если файл не найден, функция передаст его. А при закрытии программы файл будет создан.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог |
21.02.2008, 08:38 | #5 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Жирно подитожу: В хелпе делфы, по крайней мере в D6, описан аккуратненький пример работы с ИНИ файлами, а точнее с TIniFile.
Он все показывает и все обьясняет.
I'm learning to live...
|
21.02.2008, 09:53 | #6 |
Форумчанин
Регистрация: 31.05.2007
Сообщений: 266
|
Объект 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; Материал взят с www.delphi.int.ru |
21.02.2008, 13:59 | #7 |
Пользователь
Регистрация: 02.11.2007
Сообщений: 20
|
Ого))) Сколько внимания))) Спасибо!
|