Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.02.2008, 22:25   #1
matus
Пользователь
 
Регистрация: 02.11.2007
Сообщений: 20
По умолчанию TIniFile

Здравствуйте! Мне надо заранее физически создать файл инициализации и внести туда определенные параметра для программы. Как это сделать, а самое главное, где он должен размещаться так, чтобы программа его находила? (В книге написано, что файл обычно располагается в C:\Windows, но мне хотелось бы это обойти и просто размещать файл в определенной директории). Спасибо за внимание
matus вне форума Ответить с цитированием
Старый 20.02.2008, 22:28   #2
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Непонятно кто Вам мешает его расположить хоть возле программы хоть на C:\ хоть на зю:\парам-пам-пам\опа\... *.ini простой текстовый файл с таким расширением... формат записи [Имя секции] потом идут Парметр=Значение... и так до бесконечности. Еще вопросы ?
BOBAH13 вне форума Ответить с цитированием
Старый 20.02.2008, 23:17   #3
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

параметры изначально можно не задавать. в чтении прописываешь параметры по умолчанию и если ключа не будет, то в файл запишется этот ключ со значением по умолчанию. во как)
pu4koff вне форума Ответить с цитированием
Старый 21.02.2008, 00:14   #4
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 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)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 21.02.2008, 08:38   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Жирно подитожу: В хелпе делфы, по крайней мере в D6, описан аккуратненький пример работы с ИНИ файлами, а точнее с TIniFile.
Он все показывает и все обьясняет.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 21.02.2008, 09:53   #6
andrey4623
Форумчанин
 
Аватар для andrey4623
 
Регистрация: 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
andrey4623 вне форума Ответить с цитированием
Старый 21.02.2008, 13:59   #7
matus
Пользователь
 
Регистрация: 02.11.2007
Сообщений: 20
По умолчанию

Ого))) Сколько внимания))) Спасибо!
matus вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц