![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Обращение из папки которой запускается [D7]
Mamur © (2005-11-21 08:22:00)Как сделать чтобы программа обращалась к базе в той папке из которой запускается
Плохиш (2005-11-22 11:12:00) [1]
> palva © (21.11.05 19:47) [13]
> В любом случае папку C:\tmp определить невозможно.
Уверен?
> evvcom © (22.11.05 11:05) [14]
Ещё и автора хотелось бы услышать ;-)
evvcom (2005-11-22 11:05:00) [2]
> Какая папка будет "папке из которой запускается"?
puper.exe запускается из d:\super\
palva (2005-11-21 19:47:00) [3]C:\tmp>d:\super\puper.exe
> Какая папка будет "папке из которой запускается"?
В любом случае папку C:\tmp определить невозможно. Либо надо ставить условие, что текущая директория во время работы программы не меняется.
Плохиш (2005-11-21 17:11:00) [4]
> Anatoly Podgoretsky © (21.11.05 16:19) [10]
> stone © (21.11.05 16:09) [8]
> А нам не надо твою ситуацию, в вопросе четко сказано в папке
> из которой запускается.
C:\tmp>d:\super\puper.exe
Какая папка будет "папке из которой запускается"?
Набережных С. (2005-11-21 16:25:00) [5]
> Mamur ©
Кроме того:), не надо размещать базу в директории программы, если в базу предполагается записывать. Нормальный админ запретит пользователю запись в директорию программ, и твоя программа накроется. Для таких вещей есть папка Application Data.
Anatoly Podgoretsky (2005-11-21 16:19:00) [6]stone © (21.11.05 16:09) [8]
А нам не надо твою ситуацию, в вопросе четко сказано в папке из которой запускается.
Набережных С. (2005-11-21 16:18:00) [7]
> stone © (21.11.05 12:36) [6]
> если не указан рабочий каталог
Вот именно. Кроме того, ярлык - не еденствинный способ указать рабочий каталог. Кроме того, рабочий каталог может измениться в процессе работы.
Так что [2] в таком виде не корректен. Вот если бы ты перечислил связанные с этим ограничения, тогда другое дело. Обрати внимание на название конференции.
stone (2005-11-21 16:09:00) [8]
> evvcom © (21.11.05 15:17) [7]
>
> > В сабе ведь не спрашивается про папку в которой экзешник
>
> > расположен.
>
> Да? А как же тогда это понимать?
>
> > программа обращалась к базе в той папке из которой запускается
Ну не знаю, у меня телепатор не работает:)
Создадим следующую ситуацию:
Программа лежит в c:\MyProg
Одна база лежит в c:\db1
Другая в c:\db2
В папках обеих баз создан ярлык к c:\MyProg\myprog.exe, рабочий каталог в ярлыке не прописан.
При запуске программы через ярлык из любой из папок с базой данных, программа будет обращаться к базе в данной папке, откуда и запускалась, не зависимо от того, где программа расположена физически.
evvcom (2005-11-21 15:17:00) [9]
> В сабе ведь не спрашивается про папку в которой экзешник
> расположен.
Да? А как же тогда это понимать?
> программа обращалась к базе в той папке из которой запускается
stone (2005-11-21 12:36:00) [10]
> Набережных С. © (21.11.05 11:30) [3]
>
> > stone © (21.11.05 10:25) [2]
>
> Так не надо.
Это почему? Как раз та папка из которой запускается, с ярлыка например, если не указан рабочий каталог. В сабе ведь не спрашивается про папку в которой экзешник расположен.
Плохиш (2005-11-21 11:48:00) [11]
> Набережных С. © (21.11.05 11:30) [3]
>
> > stone © (21.11.05 10:25) [2]
>
> Так не надо.
Почему?
Вопрос может двояко толковаться, поэтому [2] - это один из вариантов.
umbra (2005-11-21 11:36:00) [12]
basepath := ExtractFilePath(Application.ExeName) + basename;
Набережных С. (2005-11-21 11:30:00) [13]
> stone © (21.11.05 10:25) [2]
Так не надо.
stone (2005-11-21 10:25:00) [14]GetCurrentDir
palva (2005-11-21 08:30:00) [15]Если получить полный путь туда, где расположен exe, то можно извлечь его из строки ParamStr(0). А уж как им воспользоваться, зависит от типа базы данных. Если ADO+Access, то можно указать имя базы с полным путем в строке соединения.