Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.02.19;
Скачать: CL | DM;

Вниз

Вопрос по TiniFile   Найти похожие ветки 

 
dabreezy   (2006-02-01 11:57) [0]

Добрый день.
Интересный вопрос по TiniFile. Пишу в программе следующее:

var
 ini: tinifile;
begin
Ini := TIniFile.Create("app.ini");
try
Ini.writeInteger("Interface","AAA", 800);
finally
  Ini.Free;
end;

Почему-то файл app.ini в текущей директории не создается(вообще на диске не создается). Стоит только написать путь TIniFile.Create("c:\app.ini"); все работает. Почему так. В Help"е делфи есть пример, там тоже без пути файл указывается. И еще вопрос как получить директорию из которой программа запущена? application.exename возвращает путь с exe файлом программы, не охота писать процедуру которая бы вырезала только путь.
Спасибо


 
Gero ©   (2006-02-01 12:00) [1]

> вообще на диске не создается

Вобще создается, только не там, где ты думаешь.

> не охота писать процедуру которая бы вырезала только путь.

Уже написана ExtractFilePath.


 
ЮЮ ©   (2006-02-01 12:02) [2]


> не охота писать процедуру которая бы вырезала только путь

ExtractFilePath, ExtractFileDir


 
dabreezy   (2006-02-01 12:04) [3]


> Gero ©

Спасибо за функцию. А где файл создается? В TEMP?


 
Плохиш ©   (2006-02-01 12:04) [4]


> dabreezy   (01.02.06 12:04) [3]
>
> > Gero ©
>
> Спасибо за функцию. А где файл создается? В TEMP?

А поиск по диску сделать слабо?


 
Gero ©   (2006-02-01 12:06) [5]

Note: Usually INI files are stored in the \WINDOWS directory. To work with an INI file in another location, specify the full path name of the file in FileName.


 
msguns ©   (2006-02-01 12:12) [6]

"Правильный" способ указания места для установок:

with TIniFile.Create(GetCurrentDir+"\"+CMAIN_INIFILENAME) do


 
Gero ©   (2006-02-01 12:17) [7]

> "Правильный" способ указания места для установок:

Крайне непраивльный способ.
Ini-файлы будут плодится по всему винчестеру.

Самый правильный на сегодняший день способ — C:\Documents And Settings\<UserName>\Application Data\<Program Name>


 
msguns ©   (2006-02-01 12:23) [8]

>Gero ©   (01.02.06 12:17) [7]
>Ini-файлы будут плодится по всему винчестеру.

 Если единожды правильно задать рабочую папку в ярлыке на запуск проги, то никакого "расплодения" не будет

>Самый правильный на сегодняший день способ — C:\Documents And Settings\<UserName>\Application Data\<Program Name>

Эге ж ? Во-первых, это только для ХР, во вторых если работает несколько разных юзеров за одним компом (довольно частый случай на "производстве"), то у каждого свой ини ? Далеко не все установки могут юыть персонифицированными, например, путь к БД.
В-третьих, что делать с одноименными ини-файлами, "зашитыми" в прогу ?
В-четвертых, криво снимать архивы или просто копировать программу с одного компа на другой, если требуется перенести и сетинги.
В-пятых, куча сетингов в одной папке не есть хорошо, если программ много.

Короче, нафиг-нафиг ;)


 
Плохиш ©   (2006-02-01 13:02) [9]


> Самый правильный на сегодняший день способ — C:\Documents
> And Settings\<UserName>\Application Data\<Program Name>

 IncludeTrailingPathDelimiter(GetEnvironmentVariable("APPDATA")) + ChangeFileExt(ExtractFileName(Application.ExeName), ".ini");


 
Gero ©   (2006-02-01 13:11) [10]

> Если единожды правильно задать рабочую папку в ярлыке на
> запуск проги, то никакого "расплодения" не будет

А если я exe-файл буду запускать?

> Во-первых, это только для ХР

Ну я же не буквально говорил этот путь, а SHGetSpecialFolderPath с параметром CSIDL_APPDATA. В W2k и выше будет возвращать каталог в Documents And Settings, в более старых системах — %windir%\Application Data.

> то у каждого свой ини

Если это настройки программы, то да: у каждого пользователя свои предпочтения.

> Далеко не все установки могут юыть персонифицированными,
> например, путь к БД.

Такие настройки должны хранится в D&S\All Users\Application Data

> В-третьих, что делать с одноименными ини-файлами, "зашитыми"
> в прогу ?

Не свосем понял как это. Если файл не подлежит изменению пользователем, тогда можно и в каталог с программой писать.

> В-четвертых, криво снимать архивы или просто копировать
> программу с одного компа на другой, если требуется перенести
> и сетинги.

Не понял? Скопировать ini-файл(ы) это проблема? Особенно когда знаешь, где они хранятся.

> В-пятых, куча сетингов в одной папке не есть хорошо, если
> программ много.

Для каждой программы совй каталог. Очень хорошо и наглядно. И перенести можно настройки сразу всех программ.

> Короче, нафиг-нафиг ;)

Зря, это наиболее правильный способ, который использует Microsoft, Borland, Adobe и вобще используется практически во всех нормальных программах.


 
Gero ©   (2006-02-01 13:12) [11]

> [9] Плохиш ©   (01.02.06 13:02)

Я предпочитаю SHGetSpecialFolderPath :)


 
msguns ©   (2006-02-01 13:28) [12]

>Gero ©   (01.02.06 13:11) [10]
>А если я exe-файл буду запускать?

Если из оболочки, то она выставит WorkDir. Если из комстроки..
Ты много знаешь юзеров, которые вызывают программу таким способом ? Я - ни одного.

>Если это настройки программы, то да: у каждого пользователя свои предпочтения.

 Тогда да. Хотя опять же большинство юзвкерей работают в аналоге "Мои документы". Туда, наверное и стОит писать персонифицированные установки

>Такие настройки должны хранится в D&S\All Users\Application Data

Опять же, в 98/95 такой папки нет ;)

>> В-третьих, что делать с одноименными ини-файлами, "зашитыми"
>> в прогу ?
>Не свосем понял как это. Если файл не подлежит изменению пользователем, тогда можно и в каталог с программой писать.

 Это значит, что есть две разные программы, использующие ини-файлы с одним и тем же именем. Ситуация достаточно популярная.

>Не понял? Скопировать ini-файл(ы) это проблема? Особенно когда знаешь, где они хранятся.

 Ага, вот это я приду к каждому из 30 своих пользователей, чтобы снять страховочные копии рабочих БД (в rar к примеру) и буду помимо папки с прогой еще гадать где там ее ини сидит ?

>Для каждой программы совй каталог. Очень хорошо и наглядно. И перенести можно настройки сразу всех программ.

Ну да, если наизусть помнишь какой ини к какой проге относится. В том числе и ини тех программ, которые давно выкинуты за ненадобностью

>Зря, это наиболее правильный способ, который использует Microsoft, Borland, Adobe

Вот именн. "Фирменные" программы не мешают друг другу, а часто даже "помогают". Именно поэтому установки всех их хранятся централизованно. Но ведь установки борландовских и мелкософтовых прог находятся в разных папках (разделах реестра), не так ли ?

>и вобще используется практически во всех нормальных программах.

"Нормальный" - понятие весьма относительное. "Кому и кобыла невеста" (с)

В целом же, конечно, на вкус и цвет..


 
Ega23 ©   (2006-02-01 13:32) [13]

TIniFile.Create(ExtractFilePath(ParamStr(0))+"app.ini").


 
Gero ©   (2006-02-01 13:38) [14]

> Если из оболочки, то она выставит WorkDir. Если из комстроки..
> Ты много знаешь юзеров, которые вызывают программу таким
> способом ? Я - ни одного.

Я, например. А еще я пользуюсь «открыть с помощью».
Если бы чбя-то программа создавала свои ini возле тех файлов, что я открываю, я бы отправил ее в корзину.

> Тогда да. Хотя опять же большинство юзвкерей работают в
> аналоге "Мои документы". Туда, наверное и стОит писать персонифицированны
> е установки

Не стоит, мои документы предназначены для доументов. Для хранения настроек предназначена папака Application Data, специально для этого.

> Опять же, в 98/95 такой папки нет

Опять же, вызывается функция SHGetSpecialFolderPath и она возвращает папку, которая есть.

> Это значит, что есть две разные программы, использующие
> ини-файлы с одним и тем же именем. Ситуация достаточно популярная.

Ну так в чем проблема — у каждой программы свой каталог. Не понял сути проблемы.

> Ага, вот это я приду к каждому из 30 своих пользователей,
> чтобы снять страховочные копии рабочих БД (в rar к примеру)
> и буду помимо папки с прогой еще гадать где там ее ини
> сидит ?

А что ты будешь делать если  сохранять ini как ты предлагешь?
А помнить не надо, достатчно хранить все в одном месте.

> Ну да, если наизусть помнишь какой ини к какой проге относится.
> В том числе и ини тех программ, которые давно выкинуты за
> ненадобностью

Ну если папка назыается Adobe/Photoshop то,наверняка там размещены исходники программы Adobe Photoshop, а есил Borland/Delphi — то, вероятно, Borland Delphi.

> Но ведь установки борландовских и мелкософтовых прог находятся
> в разных папках (разделах реестра), не так ли ?

Не знаю, зависти от программ и потребностей. Delphi хранит данные в HKCU\Borland\Delphi\<version>\

> "Нормальный" - понятие весьма относительное.

Да, согласен. Для котого и Автошема — идеал.

> В целом же, конечно, на вкус и цвет..

В целом да, но я предпочитаю следовать общепринятым стандартам, рекомментованых разработчиками ОС в частности.



Страницы: 1 вся ветка

Текущий архив: 2006.02.19;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.066 c
15-1138281134
ferr
2006-01-26 16:12
2006.02.19
Книга


15-1138472057
tesseract
2006-01-28 21:14
2006.02.19
Свежеслямжено :-)))


2-1138464386
TeNbOK
2006-01-28 19:06
2006.02.19
Как выбрать соответствие свойству Text в списке Combobox?


2-1138615502
Pit
2006-01-30 13:05
2006.02.19
Получение иконки из EXE


2-1138324137
ПростоТак
2006-01-27 04:08
2006.02.19
Как класс может получить указатель на самого себя ?