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

Вниз

Получение директории программы   Найти похожие ветки 

 
3asys ©   (2012-07-29 00:16) [0]

Добрый день,
есть Программа 1. В ней используется Функция получения каталога программы.Программа 1 запускается из Программы 2 посредством скрипта. При этом Функция возвращает директорию Программы 2.
В качестве Функции использовалось GetDir, ExtractFilePath(Paramstr(0) и т.п. - с одинаковым результатом.
Хотелось бы получить директорию Программы 1. Как это можно сделать?


 
Smile   (2012-07-29 00:22) [1]

Например, программа 1 может передать GetCurrentDir 2-й программе в качестве параметра.


 
3asys ©   (2012-07-29 00:33) [2]

Нет, Программе 2 ничего передавать не нужно. Нужно, чтобы Программа 2 просто запустила Программу 1 и забыла о ней, а Программа 1 в процессе своей работы получила путь к своей директории. Но запускаемая в Программе 1 функция (в том числе и GetCurrentDir) возвращает Программе 1 путь не к ее директории, а к директории Программы 2
Вот что с этим делать?


 
AV ©   (2012-07-29 00:46) [3]

Вы просто Андерсен...
А ничего не напутали?


 
3asys ©   (2012-07-29 01:19) [4]

к сожалению, похоже, что не напутал.
Функция определения директории программы используется для доступа к INI-файлу. Если запускаю Программу 1 руками, то все нормально, если Программа 1 запускается скриптом из Программы 2, то INI-файл не находится, а проверка показывает, что функция определения директории из Программы 1 возвращает директорию Программы 2.
Поэтому и написал на форум, - может кто сталкивался?


 
Плохиш ©   (2012-07-29 01:25) [5]


> ExtractFilePath(Paramstr(0)

Возвращает путь к текущему файлу exe. Т.ч. не надо нам здесь врать.


 
Dennis I. Komarov ©   (2012-07-29 22:56) [6]


> Плохиш ©   (29.07.12 01:25) [5]

А где же справка? :)


 
Плохиш ©   (2012-07-30 00:15) [7]


> Dennis I. Komarov ©   (29.07.12 22:56) [6]
>
>
> > Плохиш ©   (29.07.12 01:25) [5]
>
> А где же справка? :)

Ну звиняйте, нету у меня справки на таблете.


 
Кибальчиш   (2012-08-05 11:54) [8]

На а если так:

1. Программа 2 создает ini файл в директории Программы 1 и записывает в него путь к своей директории (ExtractFilePath(ParamStr(0) + "my.ini")
2. Когда Программа 1 запускается, она просто читает путь из ini, который находится в одной с ней директории (ParamStr(0) + "my.ini")

Как-то так.


 
Dennis I. Komarov ©   (2012-08-05 21:10) [9]


> Как-то так.

Как-то бред...


 
oldman ©   (2012-08-08 12:32) [10]

Если Программа2 не знает путь к Программа1, как она ее запускает?


 
Anatoly Podgoretsky ©   (2012-08-08 15:06) [11]

Путь совсем не обязательно знать. Запускать можно и без пути prog.exe


 
AV ©   (2012-08-08 15:17) [12]

ну да,
если в путях прописать
или алиас создать, если антивирус не обругает


 
Anatoly Podgoretsky ©   (2012-08-08 15:36) [13]


> если в путях прописать

Не обязательно.
cd Path
prog.exe


 
AV ©   (2012-08-08 16:26) [14]

дык, вроде Path то автору и не известен?


 
Sairex ©   (2012-08-13 16:17) [15]

Хммм. может в ExtractFilepath(Application.exename) - вроде как возвращает путь.


 
stas ©   (2012-08-13 16:26) [16]

ExtractFilePath(Paramstr(0))
Вернет путь к программе, которая в данный момент запущена, и по другому быть не может. Покажите код где она возвращает путь не правильно.


 
Anatoly Podgoretsky ©   (2012-08-13 16:31) [17]


> AV ©   (08.08.12 16:26) [14]
> дык, вроде Path то автору и не известен?

В таких случаях поступают следующим образом, поскольку это связаные программы, то их помещают в одну папку, или борятся с причинами, то есть ССЗБ.


 
sairex ©   (2012-08-13 17:11) [18]

Хммм незнаю незнаю.
У меня нормально все работает (сейчас проверил на Д2010).


 
Ega23 ©   (2012-08-13 19:21) [19]


> У меня нормально все работает (сейчас проверил на Д2010).


У приложения может не быть объекта Application. Например, у консольного приложения.
ParamStr(0) - будет и у консольного.


 
Dennis I. Komarov ©   (2012-08-13 20:17) [20]

Надо копать глубже: на кой леший кому-то знать с какого места запускается некий процесс?


 
Ega23 ©   (2012-08-13 20:51) [21]


> Надо копать глубже: на кой леший кому-то знать с какого
> места запускается некий процесс?

Ну, к примеру, я туда кладу "всякое" относительно exe


 
Dennis I. Komarov ©   (2012-08-13 20:53) [22]


> Ну, к примеру, я туда кладу "всякое" относительно exe

И какого? Лично я против, что бы юзерам каталог с exe был доступен для записи и модификации... Места больше нет?


 
ProgRAMmer Dimonych ©   (2012-08-13 21:42) [23]

> [22] Dennis I. Komarov ©   (13.08.12 20:53)
> > Ну, к примеру, я туда кладу "всякое" относительно exe
> И какого? Лично я против, что бы юзерам каталог с exe был
> доступен для записи и модификации... Места больше нет?

А юзеры против того, чтобы программа писала неизвестно куда. Особенно во всякие Application Data на системном диске: сколько ни отведи - всё мало.


 
Inovet ©   (2012-08-13 22:39) [24]

> [23] ProgRAMmer Dimonych ©   (13.08.12 21:42)
> А юзеры против того, чтобы программа писала неизвестно куда.
> Особенно во всякие Application Data на системном диске

Дать возможность выбора.


 
Dennis I. Komarov ©   (2012-08-13 22:45) [25]


> А юзеры против того, чтобы программа писала неизвестно куда.
>  Особенно во всякие Application Data на системном диске:
>  сколько ни отведи - всё мало.

А они юзеры, их никто не спрашивает... И ни кто не говорил, куда надо (только намекали), но там где exe-шник, там юзерам только читать...


 
antonn ©   (2012-08-13 23:24) [26]

с одной стороны на терминальном сервере это может быть чревато, но все же соглашусь что юзеров никто не спрашивает, не нравится поведение софта - не ставь


 
antonn ©   (2012-08-13 23:27) [27]


> с одной стороны на терминальном сервере это может быть чревато

но я, в таком случае, стараюсь выполнять установку софта в roam юзера, софт при этом пишет также в свою директорию, пусть и расходуется больше дискового пространства на сервере


 
Dennis I. Komarov ©   (2012-08-13 23:38) [28]


> с одной стороны на терминальном сервере это может быть чревато

Чем терминальный сервер при этом отличается?


 
antonn ©   (2012-08-13 23:43) [29]


> Чем терминальный сервер при этом отличается?

тем, что в отличии от многопользовательской рабочей станции на одну сессию в терминалке сразу несколько пользователей работают. Это в плане расположения программы в общем каталоге типа c:\soft\


 
antonn ©   (2012-08-13 23:48) [30]

т.е. я "за" запись в каталог с программой, если вдруг меня кто не так понял :)


 
Dennis I. Komarov ©   (2012-08-14 00:06) [31]


> тем, что в отличии от многопользовательской рабочей станции
> на одну сессию в терминалке сразу несколько пользователей
> работают.

о какой сессии идет речь? терминальный виндовый сервер делает сессию на каждое удаленное подключение...


 
antonn ©   (2012-08-14 01:18) [32]

что будет если все пользователи на терминале пользуются программой из C:\soft\, и она в процессе работы делает запись в свой каталог? вот про это я и говорю, вот недавно обсуждали похожее - http://delphimaster.net/view/15-1344432770/


 
Германн ©   (2012-08-14 01:29) [33]

Имхо проблема автора так и не понятна из-за того что у него 2 программы и при этом программа, в которой он пытается получить некий путь запускается из другой программы "посредством скрипта".


 
Германн ©   (2012-08-14 01:32) [34]


> Inovet ©   (13.08.12 22:39) [24]
>
> > [23] ProgRAMmer Dimonych ©   (13.08.12 21:42)
> > А юзеры против того, чтобы программа писала неизвестно
> куда.
> > Особенно во всякие Application Data на системном диске
>
> Дать возможность выбора.

Лично я за то, чтобы MS дала простую возможность администратору выбрать диск, на котором будут располагаться папки пользователей и личные папки программ. Но сомневаюсь, что MS на это согласится при моей жизни. :(


 
ProgRAMmer Dimonych ©   (2012-08-14 08:48) [35]

> [34] Германн ©   (14.08.12 01:32)
> > Inovet ©   (13.08.12 22:39) [24]
> > > [23] ProgRAMmer Dimonych ©   (13.08.12 21:42)
> > > А юзеры против того, чтобы программа писала неизвестно куда.
> > > Особенно во всякие Application Data на системном диске
> > Дать возможность выбора.
> Лично я за то, чтобы MS дала простую возможность администратору
> выбрать диск, на котором будут располагаться папки пользователей
> и личные папки программ. Но сомневаюсь, что MS на это согласится
> при моей жизни. :(

Для MS проще отвести для этого место на системном диске, как и программисту проще писать в каталог своей программы :)


 
Inovet ©   (2012-08-14 09:54) [36]

> [34] Германн ©   (14.08.12 01:32)

А разве это нельзя делать?


 
Андреевич   (2012-08-14 19:04) [37]


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

я не знаю о чем ты конкрентно говоришь, возможно речь идет о десктопах, но вот смотрю прям сейчас на терминальном сервере (2008) профиля юзеров на отдельном диске идут. Хотя, может опять какая виртуализация


 
brother ©   (2012-08-14 19:06) [38]

> на терминальном сервере (2008) профиля юзеров на отдельном
> диске идут

это же настраивается...


 
Dennis I. Komarov ©   (2012-08-14 20:13) [39]


> что будет если все пользователи на терминале пользуются
> программой из C:\soft\, и она в процессе работы делает запись
> в свой каталог?

ничего хорошего...


 
antonn ©   (2012-08-14 23:59) [40]


> brother ©   (14.08.12 19:06) [38]
>
> > на терминальном сервере (2008) профиля юзеров на отдельном
> > диске идут
>
> это же настраивается...

и я про это же говорю



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

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

Наверх




Память: 0.57 MB
Время: 0.073 c
15-1329135391
Kerk
2012-02-13 16:16
2013.03.22
KaZaNoVa


2-1341839644
well
2012-07-09 17:14
2013.03.22
Код раскладки - Английский США-международная


15-1331817337
QWERTY_
2012-03-15 17:15
2013.03.22
thumbnails


15-1352093069
Kindle
2012-11-05 09:24
2013.03.22
Как сделать движение по траектории элиппса?


15-1340220153
Дмитрий С
2012-06-20 23:22
2013.03.22
Посоветуйте алгоритм контрольной цифры.