Форум: "Начинающим";
Текущий архив: 2006.02.19;
Скачать: [xml.tar.bz2];
ВнизВопрос по 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;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.05 c